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