1e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Protocol Buffers - Google's data interchange format 2e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Copyright 2010 Google Inc. All rights reserved. 3e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// http://code.google.com/p/protobuf/ 4e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// 5e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Redistribution and use in source and binary forms, with or without 6e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// modification, are permitted provided that the following conditions are 7e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// met: 8e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// 9e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// * Redistributions of source code must retain the above copyright 10e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// notice, this list of conditions and the following disclaimer. 11e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// * Redistributions in binary form must reproduce the above 12e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// copyright notice, this list of conditions and the following disclaimer 13e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// in the documentation and/or other materials provided with the 14e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// distribution. 15e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// * Neither the name of Google Inc. nor the names of its 16e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// contributors may be used to endorse or promote products derived from 17e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// this software without specific prior written permission. 18e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// 19e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 31e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Author: wink@google.com (Wink Saville) 32e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 33e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#ifndef PROTOBUF_COMPILER_JAVAMICRO_JAVAMICRO_PARAMS_H_ 34e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#define PROTOBUF_COMPILER_JAVAMICRO_JAVAMICRO_PARAMS_H_ 35e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 36e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include <map> 37e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include <google/protobuf/stubs/strutil.h> 38e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 39e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillenamespace google { 40e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillenamespace protobuf { 41e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillenamespace compiler { 42e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savillenamespace javamicro { 43e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 44e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleenum eOptimization { JAVAMICRO_OPT_SPEED, JAVAMICRO_OPT_SPACE, JAVAMICRO_OPT_DEFAULT = JAVAMICRO_OPT_SPACE }; 45e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 46e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville// Parameters for used by the generators 47e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleclass Params { 48e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville public: 49e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville typedef map<string, string> NameMap; 50e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville private: 51e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville string empty_; 52e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville string base_name_; 53e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville eOptimization optimization_; 54e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool java_multiple_files_; 55e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool java_use_vector_; 56e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville NameMap java_packages_; 57e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville NameMap java_outer_classnames_; 58e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 59e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville public: 60e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville Params(const string & base_name) : 61e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville empty_(""), 62e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville base_name_(base_name), 63e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville optimization_(JAVAMICRO_OPT_DEFAULT), 64e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_multiple_files_(false), 65e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_use_vector_(false) { 66e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 67e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 68e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const string& base_name() const { 69e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return base_name_; 70e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 71e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 72e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool has_java_package(const string& file_name) const { 73e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_packages_.find(file_name) 74e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville != java_packages_.end(); 75e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 76e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville void set_java_package(const string& file_name, 77e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const string& java_package) { 78e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_packages_[file_name] = java_package; 79e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 80e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const string& java_package(const string& file_name) const { 81e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville NameMap::const_iterator itr; 82e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 83e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville itr = java_packages_.find(file_name); 84e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville if (itr == java_packages_.end()) { 85e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return empty_; 86e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } else { 87e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return itr->second; 88e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 89e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 90e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const NameMap& java_packages() { 91e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_packages_; 92e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 93e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 94e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool has_java_outer_classname(const string& file_name) const { 95e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_outer_classnames_.find(file_name) 96e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville != java_outer_classnames_.end(); 97e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 98e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville void set_java_outer_classname(const string& file_name, 99e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const string& java_outer_classname) { 100e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_outer_classnames_[file_name] = java_outer_classname; 101e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 102e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const string& java_outer_classname(const string& file_name) const { 103e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville NameMap::const_iterator itr; 104e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 105e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville itr = java_outer_classnames_.find(file_name); 106e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville if (itr == java_outer_classnames_.end()) { 107e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return empty_; 108e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } else { 109e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return itr->second; 110e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 111e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 112e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville const NameMap& java_outer_classnames() { 113e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_outer_classnames_; 114e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 115e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 116e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville void set_optimization(eOptimization optimization) { 117e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville optimization_ = optimization; 118e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 119e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville eOptimization optimization() const { 120e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return optimization_; 121e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 122e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 123e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville void set_java_multiple_files(bool value) { 124e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_multiple_files_ = value; 125e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 126e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool java_multiple_files() const { 127e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_multiple_files_; 128e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 129e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 130e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville void set_java_use_vector(bool value) { 131e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville java_use_vector_ = value; 132e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 133e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville bool java_use_vector() const { 134e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville return java_use_vector_; 135e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville } 136e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 137e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville}; 138e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville 139e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville} // namespace javamicro 140e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville} // namespace compiler 141e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville} // namespace protobuf 142e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville} // namespace google 143e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#endif // PROTOBUF_COMPILER_JAVAMICRO_JAVAMICRO_PARAMS_H_ 144