143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Protocol Buffers - Google's data interchange format 243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Copyright 2008 Google Inc. All rights reserved. 343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// http://code.google.com/p/protobuf/ 443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// 543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Redistribution and use in source and binary forms, with or without 643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// modification, are permitted provided that the following conditions are 743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// met: 843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// 943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// * Redistributions of source code must retain the above copyright 1043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// notice, this list of conditions and the following disclaimer. 1143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// * Redistributions in binary form must reproduce the above 1243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// copyright notice, this list of conditions and the following disclaimer 1343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// in the documentation and/or other materials provided with the 1443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// distribution. 1543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// * Neither the name of Google Inc. nor the names of its 1643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// contributors may be used to endorse or promote products derived from 1743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// this software without specific prior written permission. 1843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// 1943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 3143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Author: kenton@google.com (Kenton Varda) 3243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Based on original Protocol Buffers design by 3343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Sanjay Ghemawat, Jeff Dean, and others. 3443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// 3543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Generates Java nano code for a given .proto file. 3643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 3743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_NANO_GENERATOR_H__ 3843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#define GOOGLE_PROTOBUF_COMPILER_JAVA_NANO_GENERATOR_H__ 3943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 4043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#include <string> 4143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#include <google/protobuf/compiler/code_generator.h> 4243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 4343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace google { 4443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace protobuf { 4543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace compiler { 4643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace javanano { 4743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 4843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// CodeGenerator implementation which generates Java nano code. If you create your 4943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// own protocol compiler binary and you want it to support Java output for the 5043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// nano runtime, you can do so by registering an instance of this CodeGenerator with 5143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// the CommandLineInterface in your main() function. 5243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazciclass LIBPROTOC_EXPORT JavaNanoGenerator : public CodeGenerator { 5343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci public: 5443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci JavaNanoGenerator(); 5543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci ~JavaNanoGenerator(); 5643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 5743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci // implements CodeGenerator ---------------------------------------- 5843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci bool Generate(const FileDescriptor* file, 5943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& parameter, 6043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci OutputDirectory* output_directory, 6143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci string* error) const; 6243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 6343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci private: 6443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(JavaNanoGenerator); 6543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci}; 6643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 6743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace javanano 6843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace compiler 6943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace protobuf 7043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 7143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace google 7243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_NANO_GENERATOR_H__ 73