IWORKNumberConverter.h
Go to the documentation of this file.
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: */