javanano_params.h revision 0e055f079f53b07de3705838a7b4742ce56839f8
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Protocol Buffers - Google's data interchange format 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright 2010 Google Inc. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://code.google.com/p/protobuf/ 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Redistribution and use in source and binary forms, with or without 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// modification, are permitted provided that the following conditions are 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch// met: 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// * Redistributions of source code must retain the above copyright 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// notice, this list of conditions and the following disclaimer. 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// * Redistributions in binary form must reproduce the above 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// copyright notice, this list of conditions and the following disclaimer 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in the documentation and/or other materials provided with the 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// distribution. 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// * Neither the name of Google Inc. nor the names of its 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// contributors may be used to endorse or promote products derived from 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// this software without specific prior written permission. 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Author: wink@google.com (Wink Saville) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <map> 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <google/protobuf/stubs/strutil.h> 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace google { 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace protobuf { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace compiler { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace javanano { 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Parameters for used by the generators 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class Params { 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public: 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) typedef map<string, string> NameMap; 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string empty_; 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string base_name_; 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bool java_multiple_files_; 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool store_unknown_fields_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NameMap java_packages_; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NameMap java_outer_classnames_; 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Params(const string & base_name) : 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) empty_(""), 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base_name_(base_name), 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) store_unknown_fields_(false), 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) java_multiple_files_(false) { 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string& base_name() const { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return base_name_; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_java_package(const string& file_name) const { 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return java_packages_.find(file_name) 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci != java_packages_.end(); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_java_package(const string& file_name, 737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) const string& java_package) { 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) java_packages_[file_name] = java_package; 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const string& java_package(const string& file_name) const { 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NameMap::const_iterator itr; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) itr = java_packages_.find(file_name); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (itr == java_packages_.end()) { 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return empty_; 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 837d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return itr->second; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const NameMap& java_packages() { 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return java_packages_; 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool has_java_outer_classname(const string& file_name) const { 911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return java_outer_classnames_.find(file_name) 921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci != java_outer_classnames_.end(); 931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_java_outer_classname(const string& file_name, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string& java_outer_classname) { 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) java_outer_classnames_[file_name] = java_outer_classname; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const string& java_outer_classname(const string& file_name) const { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NameMap::const_iterator itr; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) itr = java_outer_classnames_.find(file_name); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (itr == java_outer_classnames_.end()) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return empty_; 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return itr->second; 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const NameMap& java_outer_classnames() { 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return java_outer_classnames_; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_store_unknown_fields(bool value) { 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) store_unknown_fields_ = value; 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool store_unknown_fields() const { 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return store_unknown_fields_; 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void set_java_multiple_files(bool value) { 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) java_multiple_files_ = value; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool java_multiple_files() const { 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return java_multiple_files_; 1241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 1274e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1284e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace javanano 1294e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} // namespace compiler 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace protobuf 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace google 1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // PROTOBUF_COMPILER_JAVANANO_JAVANANO_PARAMS_H_ 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)