00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libetonyek project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 */ 00009 00010 #ifndef IWORKNUMBERCONVERTER_H_INCLUDED 00011 #define IWORKNUMBERCONVERTER_H_INCLUDED 00012 00013 #include <boost/optional.hpp> 00014 00015 #include "IWORKEnum.h" 00016 00017 namespace libetonyek 00018 { 00019 00020 #define IWORK_DECLARE_NUMBER_CONVERTER(type) \ 00021 template<> \ 00022 struct IWORKNumberConverter<type> \ 00023 { \ 00024 static boost::optional<type> convert (const char *value); \ 00025 static boost::optional<type> convert (unsigned value); \ 00026 } 00027 00028 template<typename T> 00029 struct IWORKNumberConverter 00030 { 00031 static boost::optional<T> convert(const char *value); 00032 static boost::optional<T> convert(unsigned value); 00033 }; 00034 00035 IWORK_DECLARE_NUMBER_CONVERTER(bool); 00036 IWORK_DECLARE_NUMBER_CONVERTER(double); 00037 IWORK_DECLARE_NUMBER_CONVERTER(int); 00038 IWORK_DECLARE_NUMBER_CONVERTER(IWORKAlignment); 00039 IWORK_DECLARE_NUMBER_CONVERTER(IWORKBaseline); 00040 IWORK_DECLARE_NUMBER_CONVERTER(IWORKBorderType); 00041 IWORK_DECLARE_NUMBER_CONVERTER(IWORKCapitalization); 00042 IWORK_DECLARE_NUMBER_CONVERTER(IWORKCellNumberType); 00043 IWORK_DECLARE_NUMBER_CONVERTER(IWORKStrokeType); 00044 00045 } 00046 00047 #endif // IWORKNUMBERCONVERTER_H_INCLUDED 00048 00049 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */