javanano_enum_field.h revision 0f1c4eb967517e21701a3b425d115baff5d15b4f
1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Protocol Buffers - Google's data interchange format 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright 2008 Google Inc. All rights reserved. 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// http://code.google.com/p/protobuf/ 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Redistribution and use in source and binary forms, with or without 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// modification, are permitted provided that the following conditions are 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// met: 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// * Redistributions of source code must retain the above copyright 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// notice, this list of conditions and the following disclaimer. 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// * Redistributions in binary form must reproduce the above 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// copyright notice, this list of conditions and the following disclaimer 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// in the documentation and/or other materials provided with the 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// distribution. 157faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// * Neither the name of Google Inc. nor the names of its 167faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// contributors may be used to endorse or promote products derived from 177faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// this software without specific prior written permission. 187faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// 197faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 207faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 217faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 227faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 237faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 247faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 257faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 267faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 277faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 287faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 297faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Author: kenton@google.com (Kenton Varda) 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Based on original Protocol Buffers design by 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Sanjay Ghemawat, Jeff Dean, and others. 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_FIELD_H__ 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_FIELD_H__ 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <map> 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <string> 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <google/protobuf/compiler/javanano/javanano_field.h> 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace google { 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace protobuf { 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace compiler { 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathnamespace javanano { 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathclass EnumFieldGenerator : public FieldGenerator { 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath public: 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath explicit EnumFieldGenerator(const FieldDescriptor* descriptor, const Params& params); 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ~EnumFieldGenerator(); 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // implements FieldGenerator --------------------------------------- 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateMembers(io::Printer* printer) const; 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateParsingCode(io::Printer* printer) const; 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateSerializationCode(io::Printer* printer) const; 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateSerializedSizeCode(io::Printer* printer) const; 57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 587faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez string GetBoxedType() const; 597faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 607faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez private: 617faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez const FieldDescriptor* descriptor_; 627faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez map<string, string> variables_; 63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumFieldGenerator); 65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}; 66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathclass RepeatedEnumFieldGenerator : public FieldGenerator { 68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath public: 69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath explicit RepeatedEnumFieldGenerator(const FieldDescriptor* descriptor, const Params& params); 70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath ~RepeatedEnumFieldGenerator(); 71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // implements FieldGenerator --------------------------------------- 73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateMembers(io::Printer* printer) const; 74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateParsingCode(io::Printer* printer) const; 75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateSerializationCode(io::Printer* printer) const; 76c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath void GenerateSerializedSizeCode(io::Printer* printer) const; 77c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 78c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath string GetBoxedType() const; 79c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 80c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath private: 81c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath const FieldDescriptor* descriptor_; 82c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath map<string, string> variables_; 83c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 84c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RepeatedEnumFieldGenerator); 85c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}; 86c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 87c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} // namespace javanano 887faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} // namespace compiler 897faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} // namespace protobuf 907faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez 917faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez} // namespace google 927faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_ENUM_FIELD_H__ 937faaa9f3f0df9d23790277834d426c3d992ac3baCarlos Hernandez