diff options
Diffstat (limited to 'contrib/libstdc++/include/c_shadow/bits/std_ctime.h')
-rw-r--r-- | contrib/libstdc++/include/c_shadow/bits/std_ctime.h | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/contrib/libstdc++/include/c_shadow/bits/std_ctime.h b/contrib/libstdc++/include/c_shadow/bits/std_ctime.h new file mode 100644 index 0000000..44709f0 --- /dev/null +++ b/contrib/libstdc++/include/c_shadow/bits/std_ctime.h @@ -0,0 +1,107 @@ +// -*- C++ -*- header wrapper. + +// Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 2, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING. If not, write to the Free +// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// +// ISO C++ 14882: 20.5 Date and time +// + +#ifndef _CPP_CTIME +#define _CPP_CTIME 1 + +# include <bits/std_cstddef.h> + +namespace _C_legacy { + extern "C" { +# define _IN_C_LEGACY_ +# pragma GCC system_header + + // XXX + // glibc 2.1.x time.h is on crack +# undef __need_time_t +# undef __need_clock_t +# undef __need_timespec + +# include_next <time.h> + } + + typedef clock_t _CPP_clock_t_capture; + typedef time_t _CPP_time_t_capture; + typedef tm _CPP_tm_capture; + +} // namespace _C_legacy + +# undef clock_t +# undef time_t +# undef tm +# undef clock +# undef difftime +# undef mktime +# undef time +# undef asctime +# undef ctime +# undef gmtime +# undef localtime +# undef strftime + +namespace std { + + // Adopt C names into std:: + typedef _C_legacy::_CPP_clock_t_capture clock_t; + typedef _C_legacy::_CPP_time_t_capture time_t; + struct tm : _C_legacy::_CPP_tm_capture { }; + + using _C_legacy::clock; + using _C_legacy::difftime; + using _C_legacy::mktime; + using _C_legacy::time; + using _C_legacy::ctime; + + inline char* + asctime(const tm* __t) + { return _C_legacy::asctime(static_cast<_C_legacy::_CPP_tm_capture const*>(__t)); } + + inline tm* + gmtime(time_t const* __tp) + { return reinterpret_cast<tm*>(_C_legacy::gmtime(__tp)); } + + inline tm* + localtime(const time_t* __tp) + { return reinterpret_cast<tm*>(_C_legacy::localtime(__tp)); } + + inline size_t + strftime(char* __buf, size_t __maxsz, char const* __fmt, tm const* __tp) + { return _C_legacy::strftime(__buf, __maxsz, __fmt, + static_cast<_C_legacy::_CPP_tm_capture const*>(__tp)); } + +} // namespace std + +# undef _IN_C_LEGACY_ + +#endif + |