nlocaltime.h

Go to the documentation of this file.
00001 // LICENSE: (Please see the file COPYING for details)
00002 //
00003 // NUS - Nemesis Utilities System: A C++ application development framework 
00004 // Copyright (C) 2006, 2008 Otavio Rodolfo Piske
00005 //
00006 //  This file is part of NUS
00007 //
00008 //  This library is free software; you can redistribute it and/or
00009 //  modify it under the terms of the GNU Lesser General Public
00010 //  License as published by the Free Software Foundation version 2.1
00011 //  of the License.
00012 //
00013 //  This library is distributed in the hope that it will be useful,
00014 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016 //  Lesser General Public License for more details.
00017 //
00018 //  You should have received a copy of the GNU Lesser General Public
00019 //  License along with this library; if not, write to the Free Software
00020 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00021 //
00022 #ifndef NLOCALTIME_H
00023 #define NLOCALTIME_H
00024 
00031 // This is another hack to deal with different time/date functions among
00032 // OSes and Compilers.
00033 
00034 #undef n_localtime
00035 #if defined(__WIN32) && defined (_MSC_VER)
00036 #define n_localtime(m_time, tmpTime) \
00037 { \
00038       if (localtime_s(const_cast<tm *>(&m_time), &tmpTime) != 0) { \
00039             NString msg; \
00040             NWarning::print() << \
00041                   msg.arg("Unable to obtain current date/time: %s", nerror(errno));\
00042       } \
00043  }
00044 #elif defined(__WIN32) && defined (__GNUC__)
00045 #define n_localtime(m_time, tmpTime) \
00046 {\
00047       struct tm *my_tmp = localtime(&tmpTime); \
00048       if (my_tmp) { \
00049             NString msg; \
00050             memcpy((void *)&m_time, my_tmp, sizeof(m_time)); \
00051             NWarning::print() << msg.arg("Unable to obtain current date/time: %s", nerror(errno));\
00052       } \
00053 }
00054 #else
00055 #define n_localtime(m_time, tmpTime) \
00056 { \
00057       if (!localtime_r(&tmpTime, const_cast<tm *>(&m_time))) { \
00058             NString msg; \
00059             NWarning::print() << \
00060                   msg.arg("Unable to obtain current date/time: %s", nerror(errno));\
00061       } \
00062 }
00063 #endif
00064 
00065 #endif // NLOCALTIME_H_

Generated on Wed Mar 5 23:10:35 2008 for NemesisUtilitiesSystem by  doxygen 1.5.4