Compaq cxx 6.5 will now compile lyx.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4349 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Angus Leeming 2002-06-10 07:57:39 +00:00
parent b523000e96
commit 9548351ef8
49 changed files with 301 additions and 61 deletions

View File

@ -76,6 +76,14 @@
extern string current_layout; extern string current_layout;
#ifndef CXX_GLOBAL_CSTD
using std::tm;
using std::localtime;
using std::time;
using std::setlocale;
using std::strftime;
#endif
using std::vector; using std::vector;
using std::find_if; using std::find_if;
using std::find; using std::find;

View File

@ -1,3 +1,40 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* BufferView_pimpl.C:
* DepTable.C:
* buffer.C:
* converter.C:
* encoding.C:
* lyx_gui.C:
* lyx_main.C:
* lyxtextclasslist.C:
* minibuffer.C:
* sp_spell.C:
* tabular_funcs.C:
* vc-backend.C:
all c-library variables have been moved into namespace std. Wrap
using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* lyxlength.C:
* tabular-old.C:
* tabular.C:
Add a using std::abs declaration.
* kbmap.h (modifier_pair):
* paragraph.h (InsetTable, InsetList):
* lyxfont.h (FontBits):
type definition made public.
* bufferlist.C (emergencyWriteAll): the compiler complains that
there is more than one possible lyx::class_fun template to choose from.
I re-named the void specialisation as lyx::void_class_fun.
* lyxfont.C (FontBits' operator==, operator!=): taken out of class.
* tabular_funcs.C: lstrings.h must come before tabular_funcs.h or
the compiler is is unable to find tostr in write_attribute.
2002-06-06 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr> 2002-06-06 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* buffer.C (sgmlError): hide #warning * buffer.C (sgmlError): hide #warning

View File

@ -32,6 +32,10 @@
#include <fstream> #include <fstream>
#include <ctime> #include <ctime>
#ifndef CXX_GLOBAL_CSTD
using std::time;
#endif
using std::make_pair; using std::make_pair;
using std::ofstream; using std::ofstream;
using std::ifstream; using std::ifstream;

View File

@ -110,6 +110,9 @@
#include <locale> #include <locale>
#endif #endif
#ifndef CXX_GLOBAL_CSTD
using std::pow;
#endif
using std::ostream; using std::ostream;
using std::ofstream; using std::ofstream;

View File

@ -294,7 +294,7 @@ void BufferList::updateIncludedTeXfiles(string const & mastertmpdir)
void BufferList::emergencyWriteAll() void BufferList::emergencyWriteAll()
{ {
for_each(bstore.begin(), bstore.end(), for_each(bstore.begin(), bstore.end(),
lyx::class_fun(*this, &BufferList::emergencyWrite)); lyx::void_class_fun(*this, &BufferList::emergencyWrite));
} }

View File

@ -34,6 +34,10 @@
#include "support/path.h" #include "support/path.h"
#include "support/systemcall.h" #include "support/systemcall.h"
#ifndef CXX_GLOBAL_CSTD
using std::isdigit;
#endif
using std::vector; using std::vector;
using std::queue; using std::queue;
using std::endl; using std::endl;

View File

@ -17,6 +17,10 @@
#include "encoding.h" #include "encoding.h"
#include "debug.h" #include "debug.h"
#ifndef CXX_GLOBAL_CSTD
using std::strtol;
#endif
using std::endl; using std::endl;
Encodings encodings; Encodings encodings;

View File

@ -17,6 +17,10 @@
#include <cerrno> #include <cerrno>
#ifndef CXX_GLOBAL_CSTD
using std::strerror;
#endif
using std::endl; using std::endl;
using std::pair; using std::pair;
using std::make_pair; using std::make_pair;

View File

@ -1,3 +1,11 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* Alert.C: all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* Toolbar.h (Pimpl): type definition made public.
2002-05-31 John Levon <moz@compsoc.man.ac.uk> 2002-05-31 John Levon <moz@compsoc.man.ac.uk>
* Alert.h: better variable name * Alert.h: better variable name

View File

@ -62,8 +62,9 @@ public:
/// Erase the layout list /// Erase the layout list
void clearLayoutList(); void clearLayoutList();
private: /// Compaq cxx 6.5 requires this to be public
struct Pimpl; struct Pimpl;
private:
/// ///
friend struct Toolbar::Pimpl; friend struct Toolbar::Pimpl;
/// ///

View File

@ -1,3 +1,11 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* ControlDialog.tmpl: I have had to prefix base class methods with
Base:: Wierd!
* ControlInset.tmpl: #include a couple of headers.
2002-05-29 Lars Gullik Bjønnes <larsbj@birdstep.com> 2002-05-29 Lars Gullik Bjønnes <larsbj@birdstep.com>
* switch from SigC signals to boost::signals * switch from SigC signals to boost::signals

View File

@ -13,7 +13,7 @@
#include "ControlDialog.h" #include "ControlDialog.h"
#include "ButtonControllerBase.h" #include "ButtonControllerBase.h"
#include "ControlConnections.h" #include "ControlConnections.h"
#include "LyXView.h" #include "frontends/LyXView.h"
#include "BufferView.h" #include "BufferView.h"
#include "ViewBase.h" #include "ViewBase.h"
#include "debug.h" #include "debug.h"
@ -27,49 +27,49 @@ ControlDialog<Base>::ControlDialog(LyXView & lv, Dialogs & d)
template <class Base> template <class Base>
void ControlDialog<Base>::show() void ControlDialog<Base>::show()
{ {
if (isBufferDependent() && !lv_.view()->available()) if (Base::isBufferDependent() && !Base::lv_.view()->available())
return; return;
connect(); Base::connect();
setParams(); setParams();
if (emergency_exit_) { if (Base::emergency_exit_) {
hide(); hide();
return; return;
} }
if (!dialog_built_) { if (!dialog_built_) {
view().build(); Base::view().build();
dialog_built_ = true; dialog_built_ = true;
} }
bc().readOnly(isReadonly()); Base::bc().readOnly(Base::isReadonly());
view().show(); Base::view().show();
} }
template <class Base> template <class Base>
void ControlDialog<Base>::update() void ControlDialog<Base>::update()
{ {
if (isBufferDependent() && !lv_.view()->available()) if (Base::isBufferDependent() && !Base::lv_.view()->available())
return; return;
setParams(); setParams();
if (emergency_exit_) { if (Base::emergency_exit_) {
hide(); hide();
return; return;
} }
bc().readOnly(isReadonly()); Base::bc().readOnly(Base::isReadonly());
view().update(); Base::view().update();
} }
template <class Base> template <class Base>
void ControlDialog<Base>::hide() void ControlDialog<Base>::hide()
{ {
emergency_exit_ = false; Base::emergency_exit_ = false;
clearParams(); clearParams();
disconnect(); Base::disconnect();
view().hide(); Base::view().hide();
} }

View File

@ -11,10 +11,12 @@
*/ */
#include "ControlInset.h" #include "ControlInset.h"
#include "ViewBase.h"
#include "buffer.h"
#include "debug.h" #include "debug.h"
#include "frontends/LyXView.h"
#include "support/LAssert.h" #include "support/LAssert.h"
#include <boost/bind.hpp>
template <class Inset, class Params> template <class Inset, class Params>
ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d) ControlInset<Inset, Params>::ControlInset(LyXView & lv, Dialogs & d)

View File

@ -1,3 +1,17 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* ColorHandler.C:
* DropDown.C:
* FormThesaurus.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* XFormsView.C: add a using std::abs directive.
* FormBase.h (FormCB::controller): I have had to prefix base class
methods with Base:: Wierd!
2002-06-04 John Levon <moz@compsoc.man.ac.uk> 2002-06-04 John Levon <moz@compsoc.man.ac.uk>
* xformsGImage.h: an xforms build fix * xformsGImage.h: an xforms build fix

View File

@ -17,6 +17,10 @@
#include <cmath> // floor #include <cmath> // floor
#include FORMS_H_LOCATION #include FORMS_H_LOCATION
#ifndef CXX_GLOBAL_CSTD
using std::floor;
#endif
using std::max; using std::max;
using std::min; using std::min;

View File

@ -24,6 +24,10 @@
#include <cmath> #include <cmath>
#ifndef CXX_GLOBAL_CSTD
using std::pow;
#endif
using std::endl; using std::endl;

View File

@ -19,6 +19,10 @@
#include <cctype> #include <cctype>
#ifndef CXX_GLOBAL_CSTD
using std::isprint;
#endif
using std::vector; using std::vector;

View File

@ -134,8 +134,8 @@ FormCB<Controller, Base>::FormCB(Controller & c, string const & t,
template <class Controller, class Base> template <class Controller, class Base>
Controller & FormCB<Controller, Base>::controller() const Controller & FormCB<Controller, Base>::controller() const
{ {
return static_cast<Controller &>(controller_); return static_cast<Controller &>(ViewBase::controller_);
//return dynamic_cast<Controller &>(controller_); //return dynamic_cast<Controller &>(ViewBase::controller_);
} }

View File

@ -21,6 +21,10 @@
#include "form_thesaurus.h" #include "form_thesaurus.h"
#include "debug.h" #include "debug.h"
#ifndef CXX_GLOBAL_CSTD
using std::isupper;
using std::islower;
#endif
using std::vector; using std::vector;

View File

@ -33,6 +33,7 @@
#include <boost/bind.hpp> #include <boost/bind.hpp>
using std::abs;
using std::endl; using std::endl;
//extern void AutoSave(BufferView *); //extern void AutoSave(BufferView *);

View File

@ -1,3 +1,12 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* GraphicsConverter.h: forward declare class ConvProcess.
* GraphicsImageXPM.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-06 Angus Leeming <a.leeming@ic.ac.uk> 2002-06-06 Angus Leeming <a.leeming@ic.ac.uk>
* GraphicsImageXPM.C (rotate): rotate in the same sense as xdvi! * GraphicsImageXPM.C (rotate): rotate in the same sense as xdvi!

View File

@ -38,6 +38,8 @@
namespace grfx { namespace grfx {
class ConvProcess;
class GConverter : boost::noncopyable { class GConverter : boost::noncopyable {
public: public:

View File

@ -25,6 +25,14 @@
#include <cmath> // cos, sin #include <cmath> // cos, sin
#include <cstdlib> // malloc, free #include <cstdlib> // malloc, free
#ifndef CXX_GLOBAL_CSTD
using std::cos;
using std::sin;
using std::malloc;
using std::strcpy;
using std::strlen;
#endif
namespace grfx { namespace grfx {
/// Access to this class is through this static method. /// Access to this class is through this static method.

View File

@ -1,3 +1,10 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* insetexternal.C:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
2002-06-05 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr> 2002-06-05 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* insetinclude.C (uniqueID): * insetinclude.C (uniqueID):

View File

@ -36,6 +36,10 @@
#include <utility> #include <utility>
#ifndef CXX_GLOBAL_CSTD
using std::difftime;
#endif
using std::ostream; using std::ostream;
using std::endl; using std::endl;

View File

@ -61,9 +61,9 @@ public:
/// return the ISO value of a keysym /// return the ISO value of a keysym
static char getiso(unsigned int i); static char getiso(unsigned int i);
private:
typedef std::pair<key_modifier::state, key_modifier::state> modifier_pair; typedef std::pair<key_modifier::state, key_modifier::state> modifier_pair;
private:
/// ///
struct kb_key { struct kb_key {
/// Keysym /// Keysym

View File

@ -42,6 +42,10 @@
#include <cstdlib> #include <cstdlib>
#include <fcntl.h> #include <fcntl.h>
#ifndef CXX_GLOBAL_CSTD
using std::exit;
#endif
using std::endl; using std::endl;
extern LyXServer * lyxserver; extern LyXServer * lyxserver;

View File

@ -51,7 +51,9 @@
using std::endl; using std::endl;
#ifndef CXX_GLOBAL_CSTD #ifndef CXX_GLOBAL_CSTD
using std::exit;
using std::signal; using std::signal;
using std::system;
#endif #endif
extern void LoadLyXFile(string const &); extern void LoadLyXFile(string const &);

View File

@ -138,23 +138,18 @@ LyXFont::FontBits LyXFont::ignore = {
IGNORE }; IGNORE };
bool LyXFont::FontBits::operator==(LyXFont::FontBits const & fb1) const bool operator==(LyXFont::FontBits const & lhs,
LyXFont::FontBits const & rhs)
{ {
return fb1.family == family && return lhs.family == rhs.family &&
fb1.series == series && lhs.series == rhs.series &&
fb1.shape == shape && lhs.shape == rhs.shape &&
fb1.size == size && lhs.size == rhs.size &&
fb1.color == color && lhs.color == rhs.color &&
fb1.emph == emph && lhs.emph == rhs.emph &&
fb1.underbar == underbar && lhs.underbar == rhs.underbar &&
fb1.noun == noun && lhs.noun == rhs.noun &&
fb1.number == number; lhs.number == rhs.number;
}
bool LyXFont::FontBits::operator!=(LyXFont::FontBits const & fb1) const
{
return !(fb1 == *this);
} }

View File

@ -326,13 +326,11 @@ public:
/// Converts logical attributes to concrete shape attribute /// Converts logical attributes to concrete shape attribute
LyXFont::FONT_SHAPE realShape() const; LyXFont::FONT_SHAPE realShape() const;
private:
/// /** Compaq cxx 6.5 requires that the definition be public so that
it can compile operator==()
*/
struct FontBits { struct FontBits {
///
bool operator==(FontBits const & fb1) const;
///
bool operator!=(FontBits const & fb1) const;
/// ///
FONT_FAMILY family; FONT_FAMILY family;
/// ///
@ -352,6 +350,7 @@ private:
/// ///
FONT_MISC_STATE number; FONT_MISC_STATE number;
}; };
private:
/// ///
FontBits bits; FontBits bits;
@ -435,6 +434,14 @@ bool LyXFont::isSymbolFont() const
/// ///
std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE); std::ostream & operator<<(std::ostream &, LyXFont::FONT_MISC_STATE);
bool operator==(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs);
inline
bool operator!=(LyXFont::FontBits const & lhs, LyXFont::FontBits const & rhs)
{
return !(lhs == rhs);
}
/// ///
inline inline
bool operator==(LyXFont const & font1, LyXFont const & font2) bool operator==(LyXFont const & font1, LyXFont const & font2)
@ -449,4 +456,6 @@ bool operator!=(LyXFont const & font1, LyXFont const & font2)
{ {
return !(font1 == font2); return !(font1 == font2);
} }
#endif #endif

View File

@ -24,6 +24,7 @@
#include <cstdlib> #include <cstdlib>
using std::abs;
LyXLength::LyXLength() LyXLength::LyXLength()
: val_(0), unit_(LyXLength::PT) : val_(0), unit_(LyXLength::PT)

View File

@ -29,6 +29,10 @@
#include <utility> #include <utility>
#ifndef CXX_GLOBAL_CSTD
using std::exit;
#endif
using lyx::textclass_type; using lyx::textclass_type;
using std::pair; using std::pair;
using std::make_pair; using std::make_pair;

View File

@ -37,6 +37,10 @@
#include <cctype> #include <cctype>
#ifndef CXX_GLOBAL_CSTD
using std::isprint;
#endif
using std::vector; using std::vector;
using std::back_inserter; using std::back_inserter;
using std::find; using std::find;

View File

@ -342,6 +342,10 @@ public:
private: private:
/// ///
string layout_; string layout_;
public:
/** Both these definitions must be made public to keep Compaq cxx 6.5
* happy.
*/
/// ///
struct InsetTable { struct InsetTable {
/// ///
@ -354,6 +358,7 @@ private:
/// ///
typedef std::vector<InsetTable> InsetList; typedef std::vector<InsetTable> InsetList;
private:
/// ///
InsetList insetlist; InsetList insetlist;
public: public:

View File

@ -53,6 +53,14 @@
#include "encoding.h" #include "encoding.h"
#include "sp_ispell.h" #include "sp_ispell.h"
#ifndef CXX_GLOBAL_CSTD
using std::fdopen;
using std::strcpy;
using std::strlen;
using std::strpbrk;
using std::strstr;
#endif
using std::endl; using std::endl;
namespace { namespace {

View File

@ -1,3 +1,25 @@
2002-06-07 Angus Leeming <leeming@lyx.org>
Fixes needed to compile with Compaq cxx 6.5.
* lyxfunctional.h: rename lyx::class_fun(C & c, void(C::*f)(A)) as
lyx::void_class_fun to avoid compiler problems with Compaq cxx 6.5:
more than one instance of overloaded function "lyx::class_fun" matches
the argument list.
* filetools.C:
* kill.C:
* lstrings.C:
* putenv.C:
* snprintf.h:
* systemcall.C:
* utility.h:
all c-library variables have been moved into namespace std.
Wrap using std::xyz declarations inside a #ifndef CXX_GLOBAL_CSTD block.
* kill.C: rename signal.h as csignal.
* putenv.C: rename stdlib.h as cstdlib
2002-06-05 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr> 2002-06-05 Jean-Marc Lasgouttes <lasgouttes@freesurf.fr>
* lxtl.h: remove unused file * lxtl.h: remove unused file

View File

@ -16,21 +16,10 @@
#include <config.h> #include <config.h>
#include <cctype>
#include <utility>
#include <fstream>
#include "Lsstream.h"
#ifdef __GNUG__ #ifdef __GNUG__
#pragma implementation "filetools.h" #pragma implementation "filetools.h"
#endif #endif
#include <cstdlib>
#include <cstdio>
#include <fcntl.h>
#include <cerrno>
#include "debug.h" #include "debug.h"
#include "support/lstrings.h" #include "support/lstrings.h"
#include "support/systemcall.h" #include "support/systemcall.h"
@ -43,6 +32,18 @@
#include "lyxlib.h" #include "lyxlib.h"
#include "os.h" #include "os.h"
#include "Lsstream.h"
#include <cctype>
#include <cstdlib>
#include <cstdio>
#include <fcntl.h>
#include <cerrno>
#include <utility>
#include <fstream>
// Which part of this is still necessary? (JMarc). // Which part of this is still necessary? (JMarc).
#if HAVE_DIRENT_H #if HAVE_DIRENT_H
# include <dirent.h> # include <dirent.h>
@ -61,6 +62,14 @@
# endif # endif
#endif #endif
#ifndef CXX_GLOBAL_CSTD
using std::fgetc;
using std::isalpha;
using std::isalnum;
using std::pclose;
using std::popen;
#endif
using std::make_pair; using std::make_pair;
using std::pair; using std::pair;
using std::endl; using std::endl;

View File

@ -1,10 +1,14 @@
#include <config.h> #include <config.h>
#include <sys/types.h> #include <sys/types.h>
#include <signal.h> #include <csignal>
#include "lyxlib.h" #include "lyxlib.h"
#ifndef CXX_GLOBAL_CSTD
using std::kill;
#endif
int lyx::kill(int pid, int sig) int lyx::kill(int pid, int sig)
{ {
return ::kill(pid, sig); return ::kill(pid, sig);

View File

@ -31,9 +31,11 @@ using std::transform;
using std::vector; using std::vector;
#ifndef CXX_GLOBAL_CSTD #ifndef CXX_GLOBAL_CSTD
using std::atof;
using std::isdigit;
using std::strlen;
using std::tolower; using std::tolower;
using std::toupper; using std::toupper;
using std::strlen;
#endif #endif

View File

@ -60,7 +60,7 @@ class_fun(C & c, R(C::*f)(A))
template <class C, class A> void_class_fun_t<C, A> template <class C, class A> void_class_fun_t<C, A>
class_fun(C & c, void(C::*f)(A)) void_class_fun(C & c, void(C::*f)(A))
{ {
return void_class_fun_t<C, A>(c, f); return void_class_fun_t<C, A>(c, f);
} }

View File

@ -1,6 +1,10 @@
#include <config.h> #include <config.h>
#include <stdlib.h> #include <cstdlib>
#ifndef CXX_GLOBAL_CSTD
using std::putenv;
#endif
#include "lyxlib.h" #include "lyxlib.h"
int lyx::putenv(char const * str) int lyx::putenv(char const * str)

View File

@ -8,6 +8,11 @@
extern "C" { extern "C" {
#endif #endif
#ifndef CXX_GLOBAL_CSTD
using std::size_t;
using std::va_list;
#endif
#if defined(HAVE_DECL_SNPRINTF) || defined(HAVE_DECL_VSNPRINTF) #if defined(HAVE_DECL_SNPRINTF) || defined(HAVE_DECL_VSNPRINTF)
#include <stdio.h> #include <stdio.h>
#endif #endif

View File

@ -20,6 +20,9 @@
#include <cstdlib> #include <cstdlib>
#ifndef CXX_GLOBAL_CSTD
using std::system;
#endif
// Reuse of instance // Reuse of instance
int Systemcall::startscript(Starttype how, string const & what) int Systemcall::startscript(Starttype how, string const & what)

View File

@ -30,6 +30,10 @@
//#include <cstddef> // for size_t //#include <cstddef> // for size_t
//#include <utility> // for std::pair //#include <utility> // for std::pair
#ifndef CXX_GLOBAL_CSTD
using std::free;
#endif
namespace lyx namespace lyx
{ {
// checked_delete() and checked_array_delete() -----------------------------// // checked_delete() and checked_array_delete() -----------------------------//
@ -41,7 +45,7 @@ namespace lyx
{ {
BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point BOOST_STATIC_ASSERT( sizeof(T) != 0 ); // assert type complete at point
// of instantiation // of instantiation
free(x); ::free(x);
} }
} // namespace boost } // namespace boost

View File

@ -19,6 +19,7 @@
#include "support/lstrings.h" #include "support/lstrings.h"
#include "support/textutils.h" #include "support/textutils.h"
using std::abs;
using std::istream; using std::istream;
using std::getline; using std::getline;
using std::endl; using std::endl;

View File

@ -40,6 +40,7 @@
#include <algorithm> #include <algorithm>
#include <cstdlib> #include <cstdlib>
using std::abs;
using std::ostream; using std::ostream;
using std::istream; using std::istream;
using std::getline; using std::getline;

View File

@ -18,9 +18,12 @@
#include "tabular_funcs.h" #include "tabular_funcs.h"
#include "support/lstrings.h"
#include "support/LIstream.h" #include "support/LIstream.h"
#ifndef CXX_GLOBAL_CSTD
using std::strlen;
#endif
using std::istream; using std::istream;
using std::getline; using std::getline;

View File

@ -20,6 +20,7 @@
#include "LString.h" #include "LString.h"
#include "tabular.h" #include "tabular.h"
#include "support/lstrings.h" // for tostr
#include <iosfwd> #include <iosfwd>

View File

@ -21,6 +21,11 @@
#include <fstream> #include <fstream>
#ifndef CXX_GLOBAL_CSTD
using std::asctime;
using std::gmtime;
#endif
using std::endl; using std::endl;
using std::ifstream; using std::ifstream;
using std::getline; using std::getline;