LCOV - code coverage report
Current view: top level - third_party/protobuf/src/google/protobuf/compiler/javanano - javanano_helpers.h (source / functions) Hit Total Coverage
Test: tmp.zDYK9MVh93 Lines: 0 8 0.0 %
Date: 2015-10-10 Functions: 0 1 0.0 %

          Line data    Source code
       1             : // Protocol Buffers - Google's data interchange format
       2             : // Copyright 2008 Google Inc.  All rights reserved.
       3             : // http://code.google.com/p/protobuf/
       4             : //
       5             : // Redistribution and use in source and binary forms, with or without
       6             : // modification, are permitted provided that the following conditions are
       7             : // met:
       8             : //
       9             : //     * Redistributions of source code must retain the above copyright
      10             : // notice, this list of conditions and the following disclaimer.
      11             : //     * Redistributions in binary form must reproduce the above
      12             : // copyright notice, this list of conditions and the following disclaimer
      13             : // in the documentation and/or other materials provided with the
      14             : // distribution.
      15             : //     * Neither the name of Google Inc. nor the names of its
      16             : // contributors may be used to endorse or promote products derived from
      17             : // this software without specific prior written permission.
      18             : //
      19             : // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      20             : // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      21             : // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      22             : // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      23             : // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      24             : // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      25             : // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      26             : // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      27             : // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      28             : // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      29             : // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      30             : 
      31             : // Author: kenton@google.com (Kenton Varda)
      32             : //  Based on original Protocol Buffers design by
      33             : //  Sanjay Ghemawat, Jeff Dean, and others.
      34             : 
      35             : #ifndef GOOGLE_PROTOBUF_COMPILER_JAVANANO_HELPERS_H__
      36             : #define GOOGLE_PROTOBUF_COMPILER_JAVANANO_HELPERS_H__
      37             : 
      38             : #include <string>
      39             : #include <google/protobuf/compiler/javanano/javanano_params.h>
      40             : #include <google/protobuf/descriptor.pb.h>
      41             : #include <google/protobuf/descriptor.h>
      42             : #include <google/protobuf/io/printer.h>
      43             : 
      44             : namespace google {
      45             : namespace protobuf {
      46             : namespace compiler {
      47             : namespace javanano {
      48             : 
      49             : // Commonly-used separator comments.  Thick is a line of '=', thin is a line
      50             : // of '-'.
      51             : extern const char kThickSeparator[];
      52             : extern const char kThinSeparator[];
      53             : 
      54             : // Converts the field's name to camel-case, e.g. "foo_bar_baz" becomes
      55             : // "fooBarBaz" or "FooBarBaz", respectively.
      56             : string UnderscoresToCamelCase(const FieldDescriptor* field);
      57             : string UnderscoresToCamelCase(const OneofDescriptor* oneof);
      58             : string UnderscoresToCapitalizedCamelCase(const FieldDescriptor* field);
      59             : string UnderscoresToCapitalizedCamelCase(const OneofDescriptor* oneof);
      60             : 
      61             : // Appends an "_" to the end of a field where the name is a reserved java
      62             : // keyword.  For example int32 public = 1 will generate int public_.
      63             : string RenameJavaKeywords(const string& input);
      64             : 
      65             : // Similar, but for method names.  (Typically, this merely has the effect
      66             : // of lower-casing the first letter of the name.)
      67             : string UnderscoresToCamelCase(const MethodDescriptor* method);
      68             : 
      69             : // Strips ".proto" or ".protodevel" from the end of a filename.
      70             : string StripProto(const string& filename);
      71             : 
      72             : // Gets the unqualified class name for the file.  Each .proto file becomes a
      73             : // single Java class, with all its contents nested in that class.
      74             : string FileClassName(const Params& params, const FileDescriptor* file);
      75             : 
      76             : // Returns the file's Java package name.
      77             : string FileJavaPackage(const Params& params, const FileDescriptor* file);
      78             : 
      79             : // Returns whether the Java outer class is needed, i.e. whether the option
      80             : // java_multiple_files is false, or the proto file contains any file-scope
      81             : // enums/extensions.
      82             : bool IsOuterClassNeeded(const Params& params, const FileDescriptor* file);
      83             : 
      84             : // Converts the given simple name of a proto entity to its fully-qualified name
      85             : // in the Java namespace, given that it is in the given file enclosed in the
      86             : // given parent message (or NULL for file-scope entities). Whether the file's
      87             : // outer class name should be included in the return value depends on factors
      88             : // inferrable from the given arguments, including is_class which indicates
      89             : // whether the entity translates to a Java class.
      90             : string ToJavaName(const Params& params, const string& name, bool is_class,
      91             :     const Descriptor* parent, const FileDescriptor* file);
      92             : 
      93             : // These return the fully-qualified class name corresponding to the given
      94             : // descriptor.
      95           0 : inline string ClassName(const Params& params, const Descriptor* descriptor) {
      96           0 :   return ToJavaName(params, descriptor->name(), true,
      97           0 :                     descriptor->containing_type(), descriptor->file());
      98             : }
      99             : string ClassName(const Params& params, const EnumDescriptor* descriptor);
     100             : inline string ClassName(const Params& params,
     101             :     const ServiceDescriptor* descriptor) {
     102             :   return ToJavaName(params, descriptor->name(), true, NULL, descriptor->file());
     103             : }
     104             : inline string ExtensionIdentifierName(const Params& params,
     105             :     const FieldDescriptor* descriptor) {
     106             :   return ToJavaName(params, descriptor->name(), false,
     107             :                     descriptor->extension_scope(), descriptor->file());
     108             : }
     109             : string ClassName(const Params& params, const FileDescriptor* descriptor);
     110             : 
     111             : // Get the unqualified name that should be used for a field's field
     112             : // number constant.
     113             : string FieldConstantName(const FieldDescriptor *field);
     114             : 
     115             : string FieldDefaultConstantName(const FieldDescriptor *field);
     116             : 
     117             : // Print the field's proto-syntax definition as a comment.
     118             : void PrintFieldComment(io::Printer* printer, const FieldDescriptor* field);
     119             : 
     120             : enum JavaType {
     121             :   JAVATYPE_INT,
     122             :   JAVATYPE_LONG,
     123             :   JAVATYPE_FLOAT,
     124             :   JAVATYPE_DOUBLE,
     125             :   JAVATYPE_BOOLEAN,
     126             :   JAVATYPE_STRING,
     127             :   JAVATYPE_BYTES,
     128             :   JAVATYPE_ENUM,
     129             :   JAVATYPE_MESSAGE
     130             : };
     131             : 
     132             : JavaType GetJavaType(FieldDescriptor::Type field_type);
     133             : 
     134           0 : inline JavaType GetJavaType(const FieldDescriptor* field) {
     135           0 :   return GetJavaType(field->type());
     136             : }
     137             : 
     138             : string PrimitiveTypeName(JavaType type);
     139             : 
     140             : // Get the fully-qualified class name for a boxed primitive type, e.g.
     141             : // "java.lang.Integer" for JAVATYPE_INT.  Returns NULL for enum and message
     142             : // types.
     143             : string BoxedPrimitiveTypeName(JavaType type);
     144             : 
     145             : string EmptyArrayName(const Params& params, const FieldDescriptor* field);
     146             : 
     147             : string DefaultValue(const Params& params, const FieldDescriptor* field);
     148             : 
     149             : 
     150             : // Methods for shared bitfields.
     151             : 
     152             : // Gets the name of the shared bitfield for the given field index.
     153             : string GetBitFieldName(int index);
     154             : 
     155             : // Gets the name of the shared bitfield for the given bit index.
     156             : // Effectively, GetBitFieldName(bit_index / 32)
     157             : string GetBitFieldNameForBit(int bit_index);
     158             : 
     159             : // Generates the java code for the expression that returns whether the bit at
     160             : // the given bit index is set.
     161             : // Example: "((bitField1_ & 0x04000000) != 0)"
     162             : string GenerateGetBit(int bit_index);
     163             : 
     164             : // Generates the java code for the expression that sets the bit at the given
     165             : // bit index.
     166             : // Example: "bitField1_ |= 0x04000000"
     167             : string GenerateSetBit(int bit_index);
     168             : 
     169             : // Generates the java code for the expression that clears the bit at the given
     170             : // bit index.
     171             : // Example: "bitField1_ = (bitField1_ & ~0x04000000)"
     172             : string GenerateClearBit(int bit_index);
     173             : 
     174             : // Generates the java code for the expression that returns whether the bit at
     175             : // the given bit index contains different values in the current object and
     176             : // another object accessible via the variable 'other'.
     177             : // Example: "((bitField1_ & 0x04000000) != (other.bitField1_ & 0x04000000))"
     178             : string GenerateDifferentBit(int bit_index);
     179             : 
     180             : // Sets the 'get_*', 'set_*', 'clear_*' and 'different_*' variables, where * is
     181             : // the given name of the bit, to the appropriate Java expressions for the given
     182             : // bit index.
     183             : void SetBitOperationVariables(const string name,
     184             :     int bitIndex, map<string, string>* variables);
     185             : 
     186           0 : inline bool IsMapEntry(const Descriptor* descriptor) {
     187             :   // TODO(liujisi): Add an option to turn on maps for proto2 syntax as well.
     188           0 :   return descriptor->options().map_entry() &&
     189           0 :       descriptor->file()->syntax() == FileDescriptor::SYNTAX_PROTO3;
     190             : }
     191             : 
     192             : bool HasMapField(const Descriptor* descriptor);
     193             : 
     194             : }  // namespace javanano
     195             : }  // namespace compiler
     196             : }  // namespace protobuf
     197             : 
     198             : }  // namespace google
     199             : #endif  // GOOGLE_PROTOBUF_COMPILER_JAVANANO_HELPERS_H__

Generated by: LCOV version 1.10