1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _IDLC_OPTIONS_HXX_ 29 #define _IDLC_OPTIONS_HXX_ 30 31 #ifndef _IDLC_IDLCTYPEs_HXX_ 32 #include <idlc/idlctypes.hxx> 33 #endif 34 35 typedef ::std::hash_map< ::rtl::OString, 36 ::rtl::OString, 37 HashString, 38 EqualString > OptionMap; 39 40 class IllegalArgument 41 { 42 public: 43 IllegalArgument(const ::rtl::OString& msg) 44 : m_message(msg) {} 45 46 ::rtl::OString m_message; 47 }; 48 49 50 class Options 51 { 52 public: 53 explicit Options(char const * progname); 54 ~Options(); 55 56 static bool checkArgument(std::vector< std::string > & rArgs, char const * arg, size_t len); 57 static bool checkCommandFile(std::vector< std::string > & rArgs, char const * filename); 58 59 bool initOptions(std::vector< std::string > & rArgs) 60 throw(IllegalArgument); 61 bool badOption(char const * reason, std::string const & rArg) 62 throw(IllegalArgument); 63 bool setOption(char const * option, std::string const & rArg); 64 65 #if 0 /* @@@ */ 66 sal_Bool initOptions(int ac, char* av[], sal_Bool bCmdFile=sal_False) 67 throw( IllegalArgument ); 68 #endif /* @@@ */ 69 70 ::rtl::OString prepareHelp(); 71 ::rtl::OString prepareVersion(); 72 73 const ::rtl::OString& getProgramName() const; 74 bool isValid(const ::rtl::OString& option); 75 const ::rtl::OString& getOption(const ::rtl::OString& option) 76 throw( IllegalArgument ); 77 78 const StringVector& getInputFiles() const { return m_inputFiles; } 79 bool readStdin() const { return m_stdin; } 80 bool verbose() const { return m_verbose; } 81 bool quiet() const { return m_quiet; } 82 83 protected: 84 ::rtl::OString m_program; 85 StringVector m_inputFiles; 86 bool m_stdin; 87 bool m_verbose; 88 bool m_quiet; 89 OptionMap m_options; 90 }; 91 92 #endif // _IDLC_OPTIONS_HXX_ 93 94