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 #if ! defined(INCLUDED_COMPHELPER_OPTIONAL_HXX) 28 #define INCLUDED_COMPHELPER_OPTIONAL_HXX 29 30 #if ! defined(_COM_SUN_STAR_BEANS_OPTIONAL_HPP_) 31 #include "com/sun/star/beans/Optional.hpp" 32 #endif 33 #include "boost/optional.hpp" 34 35 namespace comphelper { 36 37 /// Object generators for boost::optional<T>, beans::Optional<T>: 38 39 template <typename T> 40 inline ::boost::optional<T> make_optional( T const& v ) 41 { 42 return ::boost::optional<T>(v); 43 } 44 45 template <typename T> 46 inline ::boost::optional<T> make_optional( 47 ::com::sun::star::beans::Optional<T> const& o ) 48 { 49 if (o.IsPresent) 50 return ::boost::optional<T>(o.Value); 51 else 52 return ::boost::optional<T>(); 53 } 54 55 template <typename T> 56 inline ::com::sun::star::beans::Optional<T> makeOptional( T const& v ) 57 { 58 // CPPU_IS_CPP_MAPPING_OF_NON_VOID_UNO_TYPE(T); 59 return ::com::sun::star::beans::Optional<T>(true, v); 60 } 61 62 template <typename T> 63 inline ::com::sun::star::beans::Optional<T> makeOptional( 64 ::boost::optional<T> const& o ) 65 { 66 // CPPU_IS_CPP_MAPPING_OF_NON_VOID_UNO_TYPE(T); 67 if (o) 68 return ::com::sun::star::beans::Optional<T>(true, *o); 69 else 70 return ::com::sun::star::beans::Optional<T>(); 71 } 72 73 inline ::com::sun::star::beans::Optional<sal_Bool> makeOptional( 74 ::boost::optional<bool> const& o ) 75 { 76 if (o) 77 return ::com::sun::star::beans::Optional<sal_Bool>(true, *o); 78 else 79 return ::com::sun::star::beans::Optional<sal_Bool>(); 80 } 81 82 inline ::com::sun::star::beans::Optional<sal_Bool> makeOptional( bool v ) 83 { 84 return ::com::sun::star::beans::Optional<sal_Bool>(true, v); 85 } 86 87 } // namespace comphelper 88 89 #endif // ! defined(INCLUDED_COMPHELPER_OPTIONAL_HXX) 90 91