/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _RTL_BOOTSTRAP_HXX_ #define _RTL_BOOTSTRAP_HXX_ #include #include namespace rtl { class Bootstrap { void * _handle; /** @internal */ inline Bootstrap( Bootstrap const & ); // not impl /** @internal */ inline Bootstrap & operator = ( Bootstrap const & ); // not impl public: /** @see rtl_bootstrap_setIniFileName() */ static inline void SAL_CALL setIniFilename( const ::rtl::OUString &sFile ); /** Retrieves a bootstrap parameter @param sName name of the bootstrap value. case insensitive. @param outValue (out parameter). On success contains the value, otherwise an empty string. @return sal_False, if no value could be retrieved, otherwise sal_True @see rtl_bootstrap_get() */ static inline sal_Bool get( const ::rtl::OUString &sName, ::rtl::OUString &outValue ); /** Retrieves a bootstrap parameter @param sName name of the bootstrap value. case insensitive. @param outValue (out parameter). Contains the value associated with sName. @param aDefault if none of the other methods retrieved a value, outValue is assigned to a Default. @see rtl_bootstrap_get() */ static inline void get( const ::rtl::OUString &sName, ::rtl::OUString &outValue, const ::rtl::OUString &aDefault ); /** Sets a bootstrap parameter. @param pName name of bootstrap parameter @param pValue value of bootstrap parameter @see rtl_bootstrap_set() */ static inline void set( ::rtl::OUString const & name, ::rtl::OUString const & value ) SAL_THROW( () ); /** default ctor. */ inline Bootstrap(); /** Opens a bootstrap argment container @see rtl_bootstrap_args_open() */ inline Bootstrap(const OUString & iniName); /** Closes a bootstrap argument container @see rtl_bootstrap_args_close() */ inline ~Bootstrap(); /** Retrieves a bootstrap argument. It is first tried to retrieve the value via the global function and second via the special bootstrap container. @see rtl_bootstrap_get_from_handle() */ inline sal_Bool getFrom(const ::rtl::OUString &sName, ::rtl::OUString &outValue) const; /** Retrieves a bootstrap argument. It is first tried to retrieve the value via the global function and second via the special bootstrap container. @see rtl_bootstrap_get_from_handle() */ inline void getFrom(const ::rtl::OUString &sName, ::rtl::OUString &outValue, const ::rtl::OUString &aDefault) const; /** Retrieves the name of the underlying ini-file. @see rtl_bootstrap_get_iniName_from_handle() */ inline void getIniName(::rtl::OUString & iniName) const; /** Expands a macro using bootstrap variables. @param macro [inout] The macro to be expanded */ inline void expandMacrosFrom( ::rtl::OUString & macro ) const SAL_THROW( () ) { rtl_bootstrap_expandMacros_from_handle( _handle, ¯o.pData ); } /** Expands a macro using default bootstrap variables. @param macro [inout] The macro to be expanded */ static inline void expandMacros( ::rtl::OUString & macro ) SAL_THROW( () ) { rtl_bootstrap_expandMacros( ¯o.pData ); } /** Provides the bootstrap internal handle. @return bootstrap handle */ inline rtlBootstrapHandle getHandle() const SAL_THROW( () ) { return _handle; } /** Escapes special characters ("$" and "\"). @param value an arbitrary value @return the given value, with all occurences of special characters ("$" and "\") escaped @since UDK 3.2.9 */ static inline ::rtl::OUString encode( ::rtl::OUString const & value ) SAL_THROW( () ); }; //---------------------------------------------------------------------------- // IMPLEMENTATION //---------------------------------------------------------------------------- inline void Bootstrap::setIniFilename( const ::rtl::OUString &sFile ) { rtl_bootstrap_setIniFileName( sFile.pData ); } inline sal_Bool Bootstrap::get( const ::rtl::OUString &sName, ::rtl::OUString & outValue ) { return rtl_bootstrap_get( sName.pData , &(outValue.pData) , 0 ); } inline void Bootstrap::get( const ::rtl::OUString &sName, ::rtl::OUString & outValue, const ::rtl::OUString & sDefault ) { rtl_bootstrap_get( sName.pData , &(outValue.pData) , sDefault.pData ); } inline void Bootstrap::set( ::rtl::OUString const & name, ::rtl::OUString const & value ) SAL_THROW( () ) { rtl_bootstrap_set( name.pData, value.pData ); } inline Bootstrap::Bootstrap() { _handle = 0; } inline Bootstrap::Bootstrap(const OUString & iniName) { if(iniName.getLength()) _handle = rtl_bootstrap_args_open(iniName.pData); else _handle = 0; } inline Bootstrap::~Bootstrap() { rtl_bootstrap_args_close(_handle); } inline sal_Bool Bootstrap::getFrom(const ::rtl::OUString &sName, ::rtl::OUString &outValue) const { return rtl_bootstrap_get_from_handle(_handle, sName.pData, &outValue.pData, 0); } inline void Bootstrap::getFrom(const ::rtl::OUString &sName, ::rtl::OUString &outValue, const ::rtl::OUString &aDefault) const { rtl_bootstrap_get_from_handle(_handle, sName.pData, &outValue.pData, aDefault.pData); } inline void Bootstrap::getIniName(::rtl::OUString & iniName) const { rtl_bootstrap_get_iniName_from_handle(_handle, &iniName.pData); } inline ::rtl::OUString Bootstrap::encode( ::rtl::OUString const & value ) SAL_THROW( () ) { ::rtl::OUString encoded; rtl_bootstrap_encode(value.pData, &encoded.pData); return encoded; } } #endif