kythe.io@v0.0.68-0.20240422202219-7225dbc01741/kythe/proto/schema.proto (about)

     1  /*
     2   * Copyright 2018 The Kythe Authors. All rights reserved.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *   http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  syntax = "proto3";
    18  
    19  package kythe.proto.schema;
    20  
    21  option go_package = "kythe.io/kythe/proto/schema_go_proto";
    22  option java_package = "com.google.devtools.kythe.proto";
    23  
    24  import "google/protobuf/descriptor.proto";
    25  import "kythe/proto/storage.proto";
    26  
    27  // Metadata about a Kythe schema entity.
    28  message Metadata {
    29    // String label of the schema entity.
    30    string label = 1;
    31  }
    32  
    33  extend google.protobuf.EnumValueOptions {
    34    Metadata metadata = 69945;
    35  }
    36  
    37  enum Language {
    38    UNKNOWN_LANGUAGE = 0;
    39  
    40    CXX = 1 [(metadata).label = "c++"];
    41    DART = 2 [(metadata).label = "dart"];
    42    GO = 3 [(metadata).label = "go"];
    43    HASKELL = 4 [(metadata).label = "haskell"];
    44    JAVA = 5 [(metadata).label = "java"];
    45    KOTLIN = 6 [(metadata).label = "kotlin"];
    46    PROTOBUF = 7 [(metadata).label = "protobuf"];
    47    TEXTPROTO = 8 [(metadata).label = "textproto"];
    48    TYPESCRIPT = 9 [(metadata).label = "typescript"];
    49    VERILOG = 10 [(metadata).label = "verilog"];
    50  }
    51  
    52  enum NodeKind {
    53    UNKNOWN_NODE_KIND = 0;
    54  
    55    reserved 1, 2;
    56    ANCHOR = 3 [(metadata).label = "anchor"];
    57    CONSTANT = 4 [(metadata).label = "constant"];
    58    DIAGNOSTIC = 5 [(metadata).label = "diagnostic"];
    59    DOC = 6 [(metadata).label = "doc"];
    60    FILE = 7 [(metadata).label = "file"];
    61    GFLAG = 27 [(metadata).label = "google/gflag"];
    62    INTERFACE = 8 [(metadata).label = "interface"];
    63    FUNCTION = 9 [(metadata).label = "function"];
    64    LOOKUP = 10 [(metadata).label = "lookup"];
    65    MACRO = 11 [(metadata).label = "macro"];
    66    META = 12 [(metadata).label = "meta"];
    67    NAME = 13 [(metadata).label = "name"];
    68    PACKAGE = 14 [(metadata).label = "package"];
    69    PROCESS = 15 [(metadata).label = "process"];
    70    RECORD = 16 [(metadata).label = "record"];
    71    SUM = 17 [(metadata).label = "sum"];
    72    SYMBOL = 18 [(metadata).label = "symbol"];
    73    TALIAS = 19 [(metadata).label = "talias"];
    74    TAPP = 20 [(metadata).label = "tapp"];
    75    TVAR = 26 [(metadata).label = "tvar"];
    76    TBUILTIN = 21 [(metadata).label = "tbuiltin"];
    77    TNOMINAL = 22 [(metadata).label = "tnominal"];
    78    TSIGMA = 23 [(metadata).label = "tsigma"];
    79    VARIABLE = 24 [(metadata).label = "variable"];
    80    VCS = 25 [(metadata).label = "vcs"];
    81  }
    82  
    83  enum Subkind {
    84    UNKNOWN_SUBKIND = 0;
    85  
    86    CATEGORY = 1 [(metadata).label = "category"];
    87    CLASS = 2 [(metadata).label = "class"];
    88    CONSTRUCTOR = 3 [(metadata).label = "constructor"];
    89    DESTRUCTOR = 4 [(metadata).label = "destructor"];
    90    ENUM = 5 [(metadata).label = "enum"];
    91    ENUM_CLASS = 6 [(metadata).label = "enumClass"];
    92    FIELD = 7 [(metadata).label = "field"];
    93    IMPLICIT = 8 [(metadata).label = "implicit"];
    94    IMPORT = 9 [(metadata).label = "import"];
    95    INITIALIZER = 10 [(metadata).label = "initializer"];
    96    LOCAL = 11 [(metadata).label = "local"];
    97    LOCAL_PARAMETER = 12 [(metadata).label = "local/parameter"];
    98    METHOD = 13 [(metadata).label = "method"];
    99    NAMESPACE = 14 [(metadata).label = "namespace"];
   100    STRUCT = 15 [(metadata).label = "struct"];
   101    TYPE = 16 [(metadata).label = "type"];
   102    UNION = 17 [(metadata).label = "union"];
   103  }
   104  
   105  enum FactName {
   106    UNKNOWN_FACT_NAME = 0;
   107  
   108    CODE = 1 [(metadata).label = "/kythe/code"];
   109    COMPLETE = 2 [(metadata).label = "/kythe/complete"];
   110    CONTEXT_URL = 3 [(metadata).label = "/kythe/context/url"];
   111    DETAILS = 4 [(metadata).label = "/kythe/details"];
   112    DOC_URI = 5 [(metadata).label = "/kythe/doc/uri"];
   113    LABEL = 6 [(metadata).label = "/kythe/label"];
   114    LOC_END = 7 [(metadata).label = "/kythe/loc/end"];
   115    LOC_START = 8 [(metadata).label = "/kythe/loc/start"];
   116    MESSAGE = 9 [(metadata).label = "/kythe/message"];
   117    NODE_KIND = 10 [(metadata).label = "/kythe/node/kind"];
   118    PARAM_DEFAULT = 11 [(metadata).label = "/kythe/param/default"];
   119    RULE_CLASS = 12 [(metadata).label = "/kythe/ruleclass"];
   120    SNIPPET_END = 13 [(metadata).label = "/kythe/snippet/end"];
   121    SNIPPET_START = 14 [(metadata).label = "/kythe/snippet/start"];
   122    SUBKIND = 15 [(metadata).label = "/kythe/subkind"];
   123    TEXT = 16 [(metadata).label = "/kythe/text"];
   124    TEXT_ENCODING = 17 [(metadata).label = "/kythe/text/encoding"];
   125    VISIBILITY = 18 [(metadata).label = "/kythe/visibility"];
   126    BUILD_CONFIG = 19 [(metadata).label = "/kythe/build/config"];
   127    TAG_DEPRECATED = 20 [(metadata).label = "/kythe/tag/deprecated"];
   128  }
   129  
   130  enum EdgeKind {
   131    UNKNOWN_EDGE_KIND = 0;
   132  
   133    ALIASES = 1 [(metadata).label = "/kythe/edge/aliases"];
   134    ALIASES_ROOT = 2 [(metadata).label = "/kythe/edge/aliases/root"];
   135    ANNOTATED_BY = 3 [(metadata).label = "/kythe/edge/annotatedby"];
   136    BOUNDED_LOWER = 4 [(metadata).label = "/kythe/edge/bounded/lower"];
   137    BOUNDED_UPPER = 5 [(metadata).label = "/kythe/edge/bounded/upper"];
   138    CHILD_OF = 6 [(metadata).label = "/kythe/edge/childof"];
   139    CHILD_OF_CONTEXT = 7 [(metadata).label = "/kythe/edge/childof/context"];
   140    COMPLETED_BY = 49 [(metadata).label = "/kythe/edge/completedby"];
   141    DEFINES = 10 [(metadata).label = "/kythe/edge/defines"];
   142    DEFINES_BINDING = 11 [(metadata).label = "/kythe/edge/defines/binding"];
   143    DEFINES_IMPLICIT = 50 [(metadata).label = "/kythe/edge/defines/implicit"];
   144    DENOTES = 51 [(metadata).label = "/kythe/edge/denotes"];
   145    DEPENDS = 12 [(metadata).label = "/kythe/edge/depends"];
   146    DOCUMENTS = 13 [(metadata).label = "/kythe/edge/documents"];
   147    EXPORTS = 14 [(metadata).label = "/kythe/edge/exports"];
   148    EXTENDS = 15 [(metadata).label = "/kythe/edge/extends"];
   149    GENERATES = 16 [(metadata).label = "/kythe/edge/generates"];
   150    IMPUTES = 17 [(metadata).label = "/kythe/edge/imputes"];
   151    INSTANTIATES = 18 [(metadata).label = "/kythe/edge/instantiates"];
   152    INSTANTIATES_SPECULATIVE = 19
   153        [(metadata).label = "/kythe/edge/instantiates/speculative"];
   154    NAMED = 20 [(metadata).label = "/kythe/edge/named"];
   155    OVERRIDES = 21 [(metadata).label = "/kythe/edge/overrides"];
   156    OVERRIDES_ROOT = 22 [(metadata).label = "/kythe/edge/overrides/root"];
   157    OVERRIDES_TRANSITIVE = 23
   158        [(metadata).label = "/kythe/edge/overrides/transitive"];
   159    PARAM = 24 [(metadata).label = "/kythe/edge/param"];
   160    PROPERTY_READS = 44 [(metadata).label = "/kythe/edge/property/reads"];
   161    PROPERTY_WRITES = 45 [(metadata).label = "/kythe/edge/property/writes"];
   162    REF = 25 [(metadata).label = "/kythe/edge/ref"];
   163    REF_CALL = 26 [(metadata).label = "/kythe/edge/ref/call"];
   164    REF_CALL_IMPLICIT = 27 [(metadata).label = "/kythe/edge/ref/call/implicit"];
   165    REF_DOC = 28 [(metadata).label = "/kythe/edge/ref/doc"];
   166    REF_EXPANDS = 29 [(metadata).label = "/kythe/edge/ref/expands"];
   167    REF_EXPANDS_TRANSITIVE = 30
   168        [(metadata).label = "/kythe/edge/ref/expands/transitive"];
   169    REF_FILE = 31 [(metadata).label = "/kythe/edge/ref/file"];
   170    REF_ID = 46 [(metadata).label = "/kythe/edge/ref/id"];
   171    REF_IMPLICIT = 32 [(metadata).label = "/kythe/edge/ref/implicit"];
   172    REF_IMPORTS = 33 [(metadata).label = "/kythe/edge/ref/imports"];
   173    REF_INCLUDES = 34 [(metadata).label = "/kythe/edge/ref/includes"];
   174    REF_INIT = 35 [(metadata).label = "/kythe/edge/ref/init"];
   175    REF_INIT_IMPLICIT = 36 [(metadata).label = "/kythe/edge/ref/init/implicit"];
   176    REF_QUERIES = 37 [(metadata).label = "/kythe/edge/ref/queries"];
   177    REF_WRITES = 47 [(metadata).label = "/kythe/edge/ref/writes"];
   178    SATISFIES = 38 [(metadata).label = "/kythe/edge/satisfies"];
   179    SPECIALIZES = 39 [(metadata).label = "/kythe/edge/specializes"];
   180    SPECIALIZES_SPECULATIVE = 40
   181        [(metadata).label = "/kythe/edge/specializes/speculative"];
   182    TAGGED = 41 [(metadata).label = "/kythe/edge/tagged"];
   183    TPARAM = 48 [(metadata).label = "/kythe/edge/tparam"];
   184    TYPED = 42 [(metadata).label = "/kythe/edge/typed"];
   185    UNDEFINES = 43 [(metadata).label = "/kythe/edge/undefines"];
   186  
   187    reserved 8, 9;
   188  }
   189  
   190  // A Node represents a Kythe graph node with all its known facts and edges.
   191  message Node {
   192    kythe.proto.VName source = 1;
   193  
   194    // Facts associated with the source VName (making exception for a small number
   195    // of special-cases below).
   196    repeated Fact fact = 2;
   197  
   198    // Edges associated with the source VName.
   199    repeated Edge edge = 3;
   200  
   201    // Special-case for the ubiquitous /kythe/node/kind fact.  This fact will not
   202    // appear in the fact list above.
   203    oneof kind {
   204      NodeKind kythe_kind = 4;
   205      string generic_kind = 5;
   206    }
   207  
   208    // Special-case for the ubiquitous /kythe/subkind fact.  This fact will not
   209    // appear in the fact list above.
   210    oneof subkind {
   211      Subkind kythe_subkind = 6;
   212      string generic_subkind = 7;
   213    }
   214  }
   215  
   216  // A Fact represents a single Kythe graph node fact.
   217  message Fact {
   218    kythe.proto.VName source = 1;
   219  
   220    // The fact's name.  If standard, a Kythe FactName enum is used.  Otherwise,
   221    // the fact name will be represented as a string (as encoded in an
   222    // Entry.fact_name).
   223    oneof name {
   224      FactName kythe_name = 2;
   225      string generic_name = 3;
   226    }
   227  
   228    bytes value = 4;
   229  }
   230  
   231  // An Edge represents a single Kythe graph edge.
   232  message Edge {
   233    kythe.proto.VName source = 1;
   234    kythe.proto.VName target = 2;
   235  
   236    // The edge's kind.  If standard, a Kythe EdgeKind enum is used.  Otherwise,
   237    // the edge kind will be represented as a string (as encoded in an
   238    // Entry.edge_kind without its ordinal).
   239    oneof kind {
   240      EdgeKind kythe_kind = 3;
   241      string generic_kind = 4;
   242    }
   243    int32 ordinal = 5;
   244  
   245    Node source_node = 6;
   246    Node target_node = 7;
   247  }
   248  
   249  // A Kythe Entry represents a single graph node fact or edge.
   250  message Entry {
   251    oneof entry {
   252      Fact fact = 1;
   253      Edge edge = 2;
   254    }
   255  }