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