subprocess.h revision ede38fe9b9f93888e6e41afc7abb09525f44da95
1ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Protocol Buffers - Google's data interchange format 2ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Copyright 2008 Google Inc. All rights reserved. 3ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// http://code.google.com/p/protobuf/ 4ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// 5ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Redistribution and use in source and binary forms, with or without 6ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// modification, are permitted provided that the following conditions are 7ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// met: 8ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// 9ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// * Redistributions of source code must retain the above copyright 10ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// notice, this list of conditions and the following disclaimer. 11ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// * Redistributions in binary form must reproduce the above 12ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// copyright notice, this list of conditions and the following disclaimer 13ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// in the documentation and/or other materials provided with the 14ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// distribution. 15ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// * Neither the name of Google Inc. nor the names of its 16ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// contributors may be used to endorse or promote products derived from 17ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// this software without specific prior written permission. 18ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// 19ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 31ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Author: kenton@google.com (Kenton Varda) 32ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Based on original Protocol Buffers design by 33ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Sanjay Ghemawat, Jeff Dean, and others. 34ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 35ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__ 36ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#define GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__ 37ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 38ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#include <string> 39ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#include <google/protobuf/stubs/common.h> 40ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#include <google/protobuf/descriptor.h> 41ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#include <google/protobuf/compiler/javamicro/javamicro_params.h> 42ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 43ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savillenamespace google { 44ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savillenamespace protobuf { 45ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville namespace io { 46ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville class Printer; // printer.h 47ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville } 48ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville} 49ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 50ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savillenamespace protobuf { 51ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savillenamespace compiler { 52ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savillenamespace javamicro { 53ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 54ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savilleclass FieldGenerator { 55ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville public: 56ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville //FieldGenerator() {} 57ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville FieldGenerator(const Params& params) : params_(params) {} 58ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual ~FieldGenerator(); 59ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 60ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual void GenerateMembers(io::Printer* printer) const = 0; 61ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual void GenerateMergingCode(io::Printer* printer) const = 0; 62ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual void GenerateParsingCode(io::Printer* printer) const = 0; 63ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual void GenerateSerializationCode(io::Printer* printer) const = 0; 64ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual void GenerateSerializedSizeCode(io::Printer* printer) const = 0; 65ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 66ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville virtual string GetBoxedType() const = 0; 67ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 68ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville protected: 69ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville const Params& params_; 70ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville private: 71ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGenerator); 72ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville}; 73ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 74ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville// Convenience class which constructs FieldGenerators for a Descriptor. 75ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Savilleclass FieldGeneratorMap { 76ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville public: 77ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville explicit FieldGeneratorMap(const Descriptor* descriptor, const Params ¶ms); 78ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville ~FieldGeneratorMap(); 79ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 80ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville const FieldGenerator& get(const FieldDescriptor* field) const; 81ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville const FieldGenerator& get_extension(int index) const; 82ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 83ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville private: 84ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville const Descriptor* descriptor_; 85ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville scoped_array<scoped_ptr<FieldGenerator> > field_generators_; 86ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville scoped_array<scoped_ptr<FieldGenerator> > extension_generators_; 87ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 88ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville static FieldGenerator* MakeGenerator(const FieldDescriptor* field, const Params ¶ms); 89ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 90ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(FieldGeneratorMap); 91ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville}; 92ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 93ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville} // namespace javamicro 94ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville} // namespace compiler 95ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville} // namespace protobuf 96ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville 97ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville} // namespace google 98ede38fe9b9f93888e6e41afc7abb09525f44da95Wink Saville#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_FIELD_H__ 99