143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Protocol Buffers - Google's data interchange format 243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Copyright 2010 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: wink@google.com (Wink Saville) 3243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 3343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#ifndef PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 3443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#define PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 3543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 3643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#include <map> 3743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#include <google/protobuf/stubs/strutil.h> 3843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 3943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace google { 4043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace protobuf { 4143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace compiler { 4243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazcinamespace javanano { 4343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 4443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci// Parameters for used by the generators 4543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazciclass Params { 4643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci public: 4743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci typedef map<string, string> NameMap; 4843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci private: 4943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci string empty_; 5043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci string base_name_; 5143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci bool java_multiple_files_; 5243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci NameMap java_packages_; 5343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci NameMap java_outer_classnames_; 5443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 5543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci public: 5643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci Params(const string & base_name) : 5743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci empty_(""), 5843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci base_name_(base_name), 5943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci java_multiple_files_(false) { 6043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 6143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 6243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& base_name() const { 6343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return base_name_; 6443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 6543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 6643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci bool has_java_package(const string& file_name) const { 6743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return java_packages_.find(file_name) 6843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci != java_packages_.end(); 6943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 7043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci void set_java_package(const string& file_name, 7143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& java_package) { 7243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci java_packages_[file_name] = java_package; 7343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 7443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& java_package(const string& file_name) const { 7543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci NameMap::const_iterator itr; 7643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 7743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci itr = java_packages_.find(file_name); 7843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci if (itr == java_packages_.end()) { 7943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return empty_; 8043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } else { 8143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return itr->second; 8243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 8343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 8443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const NameMap& java_packages() { 8543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return java_packages_; 8643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 8743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 8843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci bool has_java_outer_classname(const string& file_name) const { 8943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return java_outer_classnames_.find(file_name) 9043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci != java_outer_classnames_.end(); 9143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 9243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci void set_java_outer_classname(const string& file_name, 9343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& java_outer_classname) { 9443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci java_outer_classnames_[file_name] = java_outer_classname; 9543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 9643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const string& java_outer_classname(const string& file_name) const { 9743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci NameMap::const_iterator itr; 9843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 9943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci itr = java_outer_classnames_.find(file_name); 10043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci if (itr == java_outer_classnames_.end()) { 10143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return empty_; 10243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } else { 10343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return itr->second; 10443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 10543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 10643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci const NameMap& java_outer_classnames() { 10743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return java_outer_classnames_; 10843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 10943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 11043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci void set_java_multiple_files(bool value) { 11143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci java_multiple_files_ = value; 11243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 11343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci bool java_multiple_files() const { 11443325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci return java_multiple_files_; 11543325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci } 11643325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 11743325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci}; 11843325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci 11943325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace javanano 12043325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace compiler 12143325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace protobuf 12243325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci} // namespace google 12343325653beb4e5b6923d0380a84bf7e204be5c22Ulas Kirazci#endif // PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 124