From: Tim Moore Date: Mon, 14 Sep 2009 11:47:00 +0000 (+0200) Subject: Merge Include as subdirectory X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=5d9bf14ba641c2b7bce73f6b43f7fc5eb701e199;p=flightgear.git Merge Include as subdirectory --- 5d9bf14ba641c2b7bce73f6b43f7fc5eb701e199 diff --cc Include/Makefile.am index 000000000,000000000..09574b864 new file mode 100644 --- /dev/null +++ b/Include/Makefile.am @@@ -1,0 -1,0 +1,14 @@@ ++EXTRA_DIST = \ ++ auto_ptr.hxx \ ++ config.h.in \ ++ cmdargs.h \ ++ compiler.h \ ++ fg_callback.hxx \ ++ fg_constants.h \ ++ fg_memory.h \ ++ fg_traits.hxx \ ++ fg_typedefs.h \ ++ fg_stl_config.h \ ++ fg_zlib.h \ ++ general.hxx \ ++ keys.h diff --cc Include/auto_ptr.hxx index 000000000,000000000..d209b80ac new file mode 100644 --- /dev/null +++ b/Include/auto_ptr.hxx @@@ -1,0 -1,0 +1,121 @@@ ++/************************************************************************** ++ * auto_ptr.hxx -- A simple auto_ptr definition. ++ * ++ * This program 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 of the ++ * License, or (at your option) any later version. ++ * ++ * This program 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 program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ * $Id$ ++ * (Log is kept at end of this file) ++ **************************************************************************/ ++ ++#ifndef _AUTO_PTR_HXX ++#define _AUTO_PTR_HXX ++ ++#include "fg_stl_config.h" ++ ++//----------------------------------------------------------------------------- ++// ++// auto_ptr is initialised with a pointer obtained via new and deletes that ++// object when it itself is destroyed (such as when leaving block scope). ++// auto_ptr can be used in any way that a normal pointer can be. ++// ++// This class is only required when the STL doesn't supply one. ++// ++template class auto_ptr { ++private: ++ X* ptr; ++ mutable bool owns; ++ ++public: ++ typedef X element_type; ++ ++ explicit auto_ptr(X* p = 0) : ptr(p), owns(p) {} ++ ++ auto_ptr(const auto_ptr& a) : ptr(a.ptr), owns(a.owns) { ++ a.owns = 0; ++ } ++ ++#ifdef _FG_MEMBER_TEMPLATES ++ template auto_ptr(const auto_ptr& a) ++ : ptr(a.ptr), owns(a.owns) { ++ a.owns = 0; ++ } ++#endif ++ ++ auto_ptr& operator = (const auto_ptr& a) { ++ if (&a != this) { ++ if (owns) ++ delete ptr; ++ owns = a.owns; ++ ptr = a.ptr; ++ a.owns = 0; ++ } ++ } ++ ++#ifdef _FG_MEMBER_TEMPLATES ++ template auto_ptr& operator = (const auto_ptr& a) { ++ if (&a != this) { ++ if (owns) ++ delete ptr; ++ owns = a.owns; ++ ptr = a.ptr; ++ a.owns = 0; ++ } ++ } ++#endif ++ ++ ~auto_ptr() { ++ if (owns) ++ delete ptr; ++ } ++ ++ X& operator*() const { return *ptr; } ++ X* operator->() const { return ptr; } ++ X* get() const { return ptr; } ++ X* release() const { owns = false; return ptr; } ++}; ++ ++#endif /* _AUTO_PTR_HXX */ ++ ++// $Log$ ++// Revision 1.2 1998/09/10 19:07:03 curt ++// /Simulator/Objects/fragment.hxx ++// Nested fgFACE inside fgFRAGMENT since its not used anywhere else. ++// ++// ./Simulator/Objects/material.cxx ++// ./Simulator/Objects/material.hxx ++// Made fgMATERIAL and fgMATERIAL_MGR bona fide classes with private ++// data members - that should keep the rabble happy :) ++// ++// ./Simulator/Scenery/tilemgr.cxx ++// In viewable() delay evaluation of eye[0] and eye[1] in until they're ++// actually needed. ++// Change to fgTileMgrRender() to call fgMATERIAL_MGR::render_fragments() ++// method. ++// ++// ./Include/fg_stl_config.h ++// ./Include/auto_ptr.hxx ++// Added support for g++ 2.7. ++// Further changes to other files are forthcoming. ++// ++// Brief summary of changes required for g++ 2.7. ++// operator->() not supported by iterators: use (*i).x instead of i->x ++// default template arguments not supported, ++// doesn't have mem_fun_ref() needed by callbacks. ++// some std include files have different names. ++// template member functions not supported. ++// ++// Revision 1.1 1998/08/30 14:12:45 curt ++// Initial revision. Contributed by Bernie Bright. ++// diff --cc Include/cmdargs.h index 000000000,000000000..d42ec52e1 new file mode 100644 --- /dev/null +++ b/Include/cmdargs.h @@@ -1,0 -1,0 +1,50 @@@ ++// ++// CMDLINE Argument External Definitions. A hack to make command line ++// argument values visible to affected program locations. ++// ++// When implementing this feature my design intent was that program ++// options should be set according to the following rules of ++// option hierarchy. ++// ++// 1. Command line options have top priority. ++// 2. Environmental options over ride default options. ++// 3. All options must have a meaningful state. On a given platform, ++// some option setting is most likely to be desired by that community. ++// ++// CHotchkiss 10 Feb 98 ++// ++// $Id$ ++// (Log is kept at end of this file) ++ ++ ++#ifndef _CMDARGS_H ++#define _CMDARGS_H ++ ++// buffers here are all MAXPATH in length. IS THIS DEFINE UNIVERSAL? ++ ++extern char acArgbuf[]; ++extern int debugArgValue; ++extern int priorityArgValue; ++extern char rootArgbuf[]; ++extern int viewArg; ++extern char logArgbuf[]; ++ ++// These are used by initialization and RE initialization routines ++// (none right now) to set up for running (or from warm reset.) ++ ++extern const char *DefaultRootDir; ++extern const char *DefaultAircraft; ++extern const char *DefaultDebuglog; ++extern const int DefaultViewMode; ++ ++#endif ++// end of cmdargs.h ++ ++ ++// $Log$ ++// Revision 1.2 1998/02/16 16:17:36 curt ++// Minor tweaks. ++// ++// Revision 1.1 1998/02/13 00:18:46 curt ++// Initial revision. ++// diff --cc Include/compiler.h index 000000000,000000000..3359c0563 new file mode 100644 --- /dev/null +++ b/Include/compiler.h @@@ -1,0 -1,0 +1,365 @@@ ++/************************************************************************** ++ * compiler.h -- C++ Compiler Portability Macros ++ * ++ * This program 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 of the ++ * License, or (at your option) any later version. ++ * ++ * This program 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 program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ * $Id$ ++ * (Log is kept at end of this file) ++ **************************************************************************/ ++ ++#ifndef _COMPILER_H ++#define _COMPILER_H ++ ++// What this file does. ++// (1) Defines macros for some STL includes which may be affected ++// by file name length limitations. ++// (2) Defines macros for some features not supported by all C++ compilers. ++// (3) Defines 'explicit' as a null macro if the compiler doesn't support ++// the explicit keyword. ++// (4) Defines 'typename' as a null macro if the compiler doesn't support ++// the typename keyword. ++// (5) Defines bool, true and false if the compiler doesn't do so. ++// (6) Defines FG_EXPLICIT_FUNCTION_TMPL_ARGS if the compiler ++// supports calling a function template by providing its template ++// arguments explicitly. ++// (7) Defines FG_NEED_AUTO_PTR if STL doesn't provide auto_ptr<>. ++// (8) Defines FG_NO_ARROW_OPERATOR if the compiler is unable ++// to support operator->() for iterators. ++// (9) Defines FG_USE_EXCEPTIONS if the compiler supports exceptions. ++// Note: no FlightGear code uses exceptions. ++// (10) Define FG_NAMESPACES if the compiler supports namespaces. ++// (11) FG_MATH_FN_IN_NAMESPACE_STD -- not used?? ++// (12) Define FG_HAVE_STD if std namespace is supported. ++// (13) Defines FG_CLASS_PARTIAL_SPECIALIZATION if the compiler ++// supports partial specialization of class templates. ++// (14) Defines FG_HAVE_STD_INCLUDES to use ISO C++ Standard headers. ++// (15) Defines FG_HAVE_STREAMBUF if of are present. ++// (16) Define FG_MATH_EXCEPTION_CLASH if math.h defines an exception class ++// that clashes with the one defined in . ++ ++#ifdef __GNUC__ ++# if __GNUC__ == 2 ++# if __GNUC_MINOR__ < 8 ++ ++ // g++-2.7.x ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++# define STL_STRSTREAM ++ ++# define FG_NEED_AUTO_PTR ++# define FG_NO_DEFAULT_TEMPLATE_ARGS ++# define FG_INCOMPLETE_FUNCTIONAL ++# define FG_NO_ARROW_OPERATOR ++ ++# elif __GNUC_MINOR__ >= 8 ++ ++ // g++-2.8.x and egcs-1.x ++# define FG_EXPLICIT_FUNCTION_TMPL_ARGS ++# define FG_NEED_AUTO_PTR ++# define FG_MEMBER_TEMPLATES ++# define FG_NAMESPACES ++# define FG_HAVE_STD ++# define FG_HAVE_STREAMBUF ++# define FG_CLASS_PARTIAL_SPECIALIZATION ++ ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++# define STL_STRSTREAM ++ ++# endif ++# else ++# error Time to upgrade. GNU compilers < 2.7 not supported ++# endif ++#endif ++ ++// ++// Metrowerks ++// ++#if defined(__MWERKS__) ++/* ++ CodeWarrior compiler from Metrowerks, Inc. ++*/ ++# if (__MWERKS__ < 0x0900) //|| macintosh ++# define FG_HAVE_TRAITS ++# define FG_HAVE_STD_INCLUDES ++# define FG_HAVE_STD ++# define FG_NAMESPACES ++ ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++ ++// Temp: ++# define bcopy(from, to, n) memcpy(to, from, n) ++ ++// -rp- please use FG_MEM_COPY everywhere ! ++# define FG_MEM_COPY(to,from,n) memcpy(to, from, n) ++ ++# elif (__MWERKS__ >= 0x0900) && __INTEL__ ++# error still to be supported... ++# else ++# error unknown Metrowerks compiler ++# endif ++#endif ++ ++// ++// Microsoft compilers. ++// ++#ifdef _MSC_VER ++# if _MSC_VER == 1200 // msvc++ 6.0 ++# define FG_NAMESPACES ++# define FG_HAVE_STD ++# define FG_HAVE_STD_INCLUDES ++# define FG_HAVE_STREAMBUF ++ ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++# define STL_STRSTREAM ++ ++# pragma warning(disable: 4786) // identifier was truncated to '255' characters ++# pragma warning(disable: 4244) // conversion from double to float ++# pragma warning(disable: 4305) // ++ ++# elif _MSC_VER == 1100 // msvc++ 5.0 ++# error MSVC++ 5.0 still to be supported... ++# else ++# error What version of MSVC++ is this? ++# endif ++#endif ++ ++#ifdef __BORLANDC__ ++# if defined(HAVE_SGI_STL_PORT) ++ ++// Use quotes around long file names to get around Borland's include hackery ++ ++# define STL_ALGORITHM "algorithm" ++# define STL_FUNCTIONAL "functional" ++ ++# define FG_MATH_EXCEPTION_CLASH ++ ++# else ++ ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++# define STL_STRSTREAM ++ ++# define FG_INCOMPLETE_FUNCTIONAL ++ ++# endif // HAVE_SGI_STL_PORT ++ ++# define FG_NO_DEFAULT_TEMPLATE_ARGS ++# define FG_NAMESPACES ++# define FG_HAVE_STD ++ ++#endif // __BORLANDC__ ++ ++// ++// Native SGI compilers ++// ++ ++#if defined ( sgi ) && !defined( __GNUC__ ) ++# define FG_HAVE_NATIVE_SGI_COMPILERS ++ ++# define FG_EXPLICIT_FUNCTION_TMPL_ARGS ++# define FG_NEED_AUTO_PTR ++# define FG_MEMBER_TEMPLATES ++# define FG_NAMESPACES ++# define FG_HAVE_STD ++# define FG_CLASS_PARTIAL_SPECIALIZATION ++ ++# define STL_ALGORITHM ++# define STL_FUNCTIONAL ++# define STL_IOMANIP ++# define STL_IOSTREAM ++# define STL_STDEXCEPT ++# define STL_STRING ++# define STL_STRSTREAM ++ ++#endif // Native SGI compilers ++ ++ ++#if defined ( sun ) ++# include ++# if defined ( __cplusplus ) ++ // typedef unsigned int size_t; ++ extern "C" { ++ extern void *memmove(void *, const void *, size_t); ++ } ++# else ++ extern void *memmove(void *, const void *, size_t); ++# endif // __cplusplus ++#endif // sun ++ ++// ++// No user modifiable definitions beyond here. ++// ++ ++#ifdef FG_NEED_EXPLICIT ++# define explicit ++#endif ++ ++#ifdef FG_NEED_TYPENAME ++# define typename ++#endif ++ ++#ifdef FG_NEED_MUTABLE ++# define mutable ++#endif ++ ++#ifdef FG_NEED_BOOL ++ typedef int bool; ++# define true 1 ++# define false 0 ++#endif ++ ++#ifdef FG_EXPLICIT_FUNCTION_TMPL_ARGS ++# define FG_NULL_TMPL_ARGS <> ++#else ++# define FG_NULL_TMPL_ARGS ++#endif ++ ++#ifdef FG_CLASS_PARTIAL_SPECIALIZATION ++# define FG_TEMPLATE_NULL template<> ++#else ++# define FG_TEMPLATE_NULL ++#endif ++ ++// FG_NO_NAMESPACES is a hook so that users can disable namespaces ++// without having to edit library headers. ++#if defined(FG_NAMESPACES) && !defined(FG_NO_NAMESPACES) ++# define FG_NAMESPACE(X) namespace X { ++# define FG_NAMESPACE_END } ++# define FG_USING_NAMESPACE(X) using namespace X ++# else ++# define FG_NAMESPACE(X) ++# define FG_NAMESPACE_END ++# define FG_USING_NAMESPACE(X) ++#endif ++ ++# ifdef FG_HAVE_STD ++# define FG_USING_STD(X) using std::X ++# define STD std ++# else ++# define FG_USING_STD(X) ++# define STD ++# endif ++ ++// Additional implementation from SGI STL 3.11 ++// Adapter function objects: pointers to member functions ++#ifdef FG_INCOMPLETE_FUNCTIONAL ++ ++template ++class const_mem_fun_ref_t ++#ifndef __BORLANDC__ ++ : public unary_function<_Tp,_Ret> ++#endif // __BORLANDC__ ++{ ++public: ++ explicit const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) : _M_f(__pf) {} ++ _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); } ++private: ++ _Ret (_Tp::*_M_f)() const; ++}; ++ ++template ++inline const_mem_fun_ref_t<_Ret,_Tp> mem_fun_ref(_Ret (_Tp::*__f)() const) ++ { return const_mem_fun_ref_t<_Ret,_Tp>(__f); } ++ ++#endif // FG_INCOMPLETE_FUNCTIONAL ++ ++#endif // _COMPILER_H ++ ++// $Log$ ++// Revision 1.9 1999/03/02 00:36:31 curt ++// Tweaks for native SGI compilers. ++// ++// Revision 1.8 1999/02/26 22:07:10 curt ++// Added initial support for native SGI compilers. ++// ++// Revision 1.7 1999/02/05 21:27:41 curt ++// Tweaks for the solaris platform. ++// ++// Revision 1.6 1999/01/27 04:45:17 curt ++// Tweak for solaris. ++// ++// Revision 1.5 1999/01/19 20:41:25 curt ++// Added support for MacOS (Metrowerks) ++// ++// Revision 1.4 1999/01/06 21:47:37 curt ++// renamed general.h to general.hxx ++// More portability enhancements to compiler.h ++// ++// Revision 1.3 1998/11/06 14:04:09 curt ++// More portability improvements by Bernie Bright. ++// ++// Revision 1.2 1998/11/02 18:28:08 curt ++// Portability updates from Bernie Bright ++// ++// Revision 1.1 1998/10/16 00:49:04 curt ++// fg_stl_config.h -> compiler.h, fg_stl_config.h maintained for backwards ++// compatibility. ++// ++// Revision 1.3 1998/09/29 02:00:16 curt ++// Start of some borland c support ++// ++// Revision 1.2 1998/09/10 19:07:04 curt ++// /Simulator/Objects/fragment.hxx ++// Nested fgFACE inside fgFRAGMENT since its not used anywhere else. ++// ++// ./Simulator/Objects/material.cxx ++// ./Simulator/Objects/material.hxx ++// Made fgMATERIAL and fgMATERIAL_MGR bona fide classes with private ++// data members - that should keep the rabble happy :) ++// ++// ./Simulator/Scenery/tilemgr.cxx ++// In viewable() delay evaluation of eye[0] and eye[1] in until they're ++// actually needed. ++// Change to fgTileMgrRender() to call fgMATERIAL_MGR::render_fragments() ++// method. ++// ++// ./Include/fg_stl_config.h ++// ./Include/auto_ptr.hxx ++// Added support for g++ 2.7. ++// Further changes to other files are forthcoming. ++// ++// Brief summary of changes required for g++ 2.7. ++// operator->() not supported by iterators: use (*i).x instead of i->x ++// default template arguments not supported, ++// doesn't have mem_fun_ref() needed by callbacks. ++// some std include files have different names. ++// template member functions not supported. ++// ++// Revision 1.1 1998/08/30 14:13:49 curt ++// Initial revision. Contributed by Bernie Bright. ++// diff --cc Include/config.h.in index 000000000,000000000..4b854da56 new file mode 100644 --- /dev/null +++ b/Include/config.h.in @@@ -1,0 -1,0 +1,197 @@@ ++/* Include/config.h.in. Generated automatically from configure.in by autoheader. */ ++ ++/* Define to empty if the keyword does not work. */ ++#undef const ++ ++/* Define if you don't have vprintf but do have _doprnt. */ ++#undef HAVE_DOPRNT ++ ++/* Define if you have the vprintf function. */ ++#undef HAVE_VPRINTF ++ ++/* Define as the return type of signal handlers (int or void). */ ++#undef RETSIGTYPE ++ ++/* Define to `unsigned' if doesn't define. */ ++#undef size_t ++ ++/* Define if you have the ANSI C header files. */ ++#undef STDC_HEADERS ++ ++/* Define if you can safely include both and . */ ++#undef TIME_WITH_SYS_TIME ++ ++/* Define if your declares struct tm. */ ++#undef TM_IN_SYS_TIME ++ ++/* Define if the X Window System is missing or not being used. */ ++#undef X_DISPLAY_MISSING ++ ++/* Define to empty if the keyword does not work. */ ++#undef const ++ ++/* Define to eliminate all trace of debugging messages such as for a ++ release build */ ++#undef FG_NDEBUG ++ ++/* Define if you don't have vprintf but do have _doprnt. */ ++#undef HAVE_DOPRNT ++ ++/* Define if you have the vprintf function. */ ++#undef HAVE_VPRINTF ++ ++/* Define to package name */ ++#undef PACKAGE ++ ++/* Define as the return type of signal handlers (int or void). */ ++#undef RETSIGTYPE ++ ++/* Define to `unsigned' if doesn't define. */ ++#undef size_t ++ ++/* Define if you have the ANSI C header files. */ ++#undef STDC_HEADERS ++ ++/* Define if you can safely include both and . */ ++#undef TIME_WITH_SYS_TIME ++ ++/* Define if your declares struct tm. */ ++#undef TM_IN_SYS_TIME ++ ++/* Define to version number */ ++#undef VERSION ++ ++/* Define if compiling on a Winbloze (95, NT, etc.) platform */ ++#undef WIN32 ++ ++/* Define if the X Window System is missing or not being used. */ ++#undef X_DISPLAY_MISSING ++ ++/* Define if you have the GetLocalTime function. */ ++#undef HAVE_GETLOCALTIME ++ ++/* Define if you have the bcopy function. */ ++#undef HAVE_BCOPY ++ ++/* Define if you have the ftime function. */ ++#undef HAVE_FTIME ++ ++/* Define if you have the getitimer function. */ ++#undef HAVE_GETITIMER ++ ++/* Define if you have the getrusage function. */ ++#undef HAVE_GETRUSAGE ++ ++/* Define if you have the gettimeofday function. */ ++#undef HAVE_GETTIMEOFDAY ++ ++/* Define if you have the memcpy function. */ ++#undef HAVE_MEMCPY ++ ++/* Define if you have the mktime function. */ ++#undef HAVE_MKTIME ++ ++/* Define if you have the rand function. */ ++#undef HAVE_RAND ++ ++/* Define if you have the random function. */ ++#undef HAVE_RANDOM ++ ++/* Define if you have the rint function. */ ++#undef HAVE_RINT ++ ++/* Define if you have the setitimer function. */ ++#undef HAVE_SETITIMER ++ ++/* Define if you have the signal function. */ ++#undef HAVE_SIGNAL ++ ++/* Define if you have the strstr function. */ ++#undef HAVE_STRSTR ++ ++/* Define if you have the header file. */ ++#undef HAVE_FCNTL_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_GETOPT_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_GFC_GDBF_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_GPC_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_MALLOC_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_MEMORY_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_STDLIB_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_SYS_STAT_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_SYS_TIME_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_SYS_TIMEB_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_UNISTD_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_VALUES_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_WINBASE_H ++ ++/* Define if you have the header file. */ ++#undef HAVE_WINDOWS_H ++ ++/* Define if you have the GL library (-lGL). */ ++#undef HAVE_LIBGL ++ ++/* Define if you have the GLU library (-lGLU). */ ++#undef HAVE_LIBGLU ++ ++/* Define if you have the GLcore library (-lGLcore). */ ++#undef HAVE_LIBGLCORE ++ ++/* Define if you have the ICE library (-lICE). */ ++#undef HAVE_LIBICE ++ ++/* Define if you have the MesaGL library (-lMesaGL). */ ++#undef HAVE_LIBMESAGL ++ ++/* Define if you have the MesaGLU library (-lMesaGLU). */ ++#undef HAVE_LIBMESAGLU ++ ++/* Define if you have the SM library (-lSM). */ ++#undef HAVE_LIBSM ++ ++/* Define if you have the X11 library (-lX11). */ ++#undef HAVE_LIBX11 ++ ++/* Define if you have the Xext library (-lXext). */ ++#undef HAVE_LIBXEXT ++ ++/* Define if you have the Xi library (-lXi). */ ++#undef HAVE_LIBXI ++ ++/* Define if you have the Xmu library (-lXmu). */ ++#undef HAVE_LIBXMU ++ ++/* Define if you have the Xt library (-lXt). */ ++#undef HAVE_LIBXT ++ ++/* Define if you have the glut library (-lglut). */ ++#undef HAVE_LIBGLUT ++ ++/* Define if you have the m library (-lm). */ ++#undef HAVE_LIBM ++ ++/* Define if you have the socket library (-lsocket). */ ++#undef HAVE_LIBSOCKET diff --cc Include/fg_callback.hxx index 000000000,000000000..05edd0126 new file mode 100644 --- /dev/null +++ b/Include/fg_callback.hxx @@@ -1,0 -1,0 +1,195 @@@ ++/************************************************************************** ++ * fg_callback.hxx -- Wrapper classes to treat function and method pointers ++ * as objects. ++ * ++ * This program 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 of the ++ * License, or (at your option) any later version. ++ * ++ * This program 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 program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ * $Id$ ++ * (Log is kept at end of this file) ++ **************************************************************************/ ++ ++#ifndef _FG_CALLBACK_HXX ++#define _FG_CALLBACK_HXX ++ ++//----------------------------------------------------------------------------- ++// ++// Abstract base class for all FlightGear callbacks. ++// ++class fgCallback ++{ ++public: ++ virtual ~fgCallback() {} ++ ++ virtual fgCallback* clone() const = 0; ++ virtual void* call( void** ) = 0; ++ ++ size_t params() const { return n_params; } ++ ++protected: ++ fgCallback( size_t params ) ++ : n_params(params) {} ++ ++protected: ++ // The number of parameters to pass to the callback routine. ++ size_t n_params; ++ ++private: ++}; ++ ++//----------------------------------------------------------------------------- ++// ++// Callback for invoking a file scope function. ++// ++class fgFunctionCallback : public fgCallback ++{ ++public: ++ // Pointer to function taking no arguments and returning void. ++ typedef void (*Proc0v)(); ++ ++ // A callback instance to invoke the function 'p' ++ fgFunctionCallback( Proc0v p ); ++ ++ // Create a clone on the heap. ++ virtual fgCallback* clone() const; ++ ++private: ++ void* call( void** in ); ++ inline void* call0v( void** ); ++ ++private: ++ // Not defined. ++ fgFunctionCallback(); ++ ++private: ++ ++ typedef void* (fgFunctionCallback::*DoPtr)( void** ); ++ DoPtr doPtr; ++ Proc0v proc0v; ++}; ++ ++inline ++fgFunctionCallback::fgFunctionCallback( Proc0v p ) ++ : fgCallback(0), ++ doPtr(&fgFunctionCallback::call0v), ++ proc0v(p) ++{ ++ // empty ++} ++ ++inline fgCallback* ++fgFunctionCallback::clone() const ++{ ++ return new fgFunctionCallback( *this ); ++} ++ ++inline void* ++fgFunctionCallback::call( void** in ) ++{ ++ return (this->*doPtr)( in ); ++} ++ ++inline void* ++fgFunctionCallback::call0v( void** ) ++{ ++ (*proc0v)(); ++ return (void*) NULL; ++} ++ ++//----------------------------------------------------------------------------- ++// ++// Callback for invoking an object method. ++// ++template< class T > ++class fgMethodCallback : public fgCallback ++{ ++public: ++ // Pointer to method taking no arguments and returning void. ++ typedef void (T::*Method0v)(); ++ ++ // A callback instance to invoke method 'm' of object 'o' ++ fgMethodCallback( T* o, Method0v m ) ++ : fgCallback(0), ++ object(o), ++ method0v(m), ++ doPtr(&fgMethodCallback::call0v) {} ++ ++ // Create a clone on the heap. ++ fgCallback* clone() const; ++ ++private: ++ // ++ void* call( void** in ); ++ ++ // ++ void* call0v( void** ); ++ ++private: ++ // Not defined. ++ fgMethodCallback(); ++ ++private: ++ T* object; ++ Method0v method0v; ++ ++ typedef void * (fgMethodCallback::*DoPtr)( void ** ); ++ DoPtr doPtr; ++}; ++ ++template< class T > inline fgCallback* ++fgMethodCallback::clone() const ++{ ++ return new fgMethodCallback( *this ); ++} ++ ++template< class T > inline void* ++fgMethodCallback::call( void** in ) ++{ ++ return (this->*doPtr)( in ); ++} ++ ++ ++template< class T > inline void* ++fgMethodCallback::call0v( void** ) ++{ ++ (object->*method0v)(); ++ return (void*) NULL; ++} ++ ++#endif // _FG_CALLBACK_HXX ++ ++// $Log$ ++// Revision 1.2 1998/09/15 02:09:04 curt ++// Include/fg_callback.hxx ++// Moved code inline to stop g++ 2.7 from complaining. ++// ++// Simulator/Time/event.[ch]xx ++// Changed return type of fgEVENT::printStat(). void caused g++ 2.7 to ++// complain bitterly. ++// ++// Minor bugfix and changes. ++// ++// Simulator/Main/GLUTmain.cxx ++// Added missing type to idle_state definition - eliminates a warning. ++// ++// Simulator/Main/fg_init.cxx ++// Changes to airport lookup. ++// ++// Simulator/Main/options.cxx ++// Uses fg_gzifstream when loading config file. ++// ++// Revision 1.1 1998/08/30 14:13:48 curt ++// Initial revision. Contributed by Bernie Bright. ++// ++ diff --cc Include/fg_constants.h index 000000000,000000000..70b932946 new file mode 100644 --- /dev/null +++ b/Include/fg_constants.h @@@ -1,0 -1,0 +1,262 @@@ ++// fg_constants.h -- various constant definitions ++// ++// Written by Curtis Olson, started July 1997. ++// ++// Copyright (C) 1997 Curtis L. Olson - curt@flightgear.org ++// ++// This program 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 of the ++// License, or (at your option) any later version. ++// ++// This program 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 program; if not, write to the Free Software ++// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++// ++// $Id$ ++// (Log is kept at end of this file) ++ ++ ++#ifndef _FG_CONSTANTS_H ++#define _FG_CONSTANTS_H ++ ++ ++/* ++#ifndef __cplusplus ++# error This library requires C++ ++#endif ++*/ ++ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++#include "Include/compiler.h" ++ ++#ifdef FG_MATCH_EXCEPTION_CLASH ++# define exception C_exception ++#endif ++ ++#ifdef FG_HAVE_STD_INCLUDES ++# include ++#else ++# include ++#endif ++ ++// This should be defined via autoconf in configure.in ++#ifndef VERSION ++#define VERSION "\"not defined\"" ++#endif ++ ++ ++// Make sure PI is defined in its various forms ++ ++// PI, only PI, and nothing but PI ++#ifdef M_PI ++# define FG_PI M_PI ++#else ++# define FG_PI 3.14159265358979323846 ++#endif ++ ++// 2 * PI ++#define FG_2PI 6.28318530717958647692 ++ ++// PI / 2 ++#ifdef M_PI_2 ++# define FG_PI_2 M_PI_2 ++#else ++# define FG_PI_2 1.57079632679489661923 ++#endif ++ ++// PI / 4 ++#define FG_PI_4 0.78539816339744830961 ++ ++#ifndef M_E ++# define M_E 2.7182818284590452354 ++#endif ++ ++// ONE_SECOND is pi/180/60/60, or about 100 feet at earths' equator ++#define ONE_SECOND 4.848136811E-6 ++ ++ ++// Radius of Earth in kilometers at the equator. Another source had ++// 6378.165 but this is probably close enough ++#define EARTH_RAD 6378.155 ++ ++ ++// Earth parameters for WGS 84, taken from LaRCsim/ls_constants.h ++ ++// Value of earth radius from [8] ++#define EQUATORIAL_RADIUS_FT 20925650. // ft ++#define EQUATORIAL_RADIUS_M 6378138.12 // meter ++// Radius squared ++#define RESQ_FT 437882827922500. // ft ++#define RESQ_M 40680645877797.1344 // meter ++ ++// Value of earth flattening parameter from ref [8] ++// ++// Note: FP = f ++// E = 1-f ++// EPS = sqrt(1-(1-f)^2) ++// ++ ++#define FP 0.003352813178 ++#define E 0.996647186 ++#define EPS 0.081819221 ++#define INVG 0.031080997 ++ ++// Time Related Parameters ++ ++#define MJD0 2415020.0 ++#define J2000 (2451545.0 - MJD0) ++#define SIDRATE .9972695677 ++ ++ ++// Conversions ++ ++// Degrees to Radians ++#define DEG_TO_RAD 0.017453292 // deg*pi/180 = rad ++ ++// Radians to Degrees ++#define RAD_TO_DEG 57.29577951 // rad*180/pi = deg ++ ++// Arc seconds to radians // (arcsec*pi)/(3600*180) = rad ++#define ARCSEC_TO_RAD 4.84813681109535993589e-06 ++ ++// Radians to arc seconds // (rad*3600*180)/pi = arcsec ++#define RAD_TO_ARCSEC 206264.806247096355156 ++ ++// Feet to Meters ++#define FEET_TO_METER 0.3048 ++ ++// Meters to Feet ++#define METER_TO_FEET 3.28083989501312335958 ++ ++// Meters to Nautical Miles, 1 nm = 6076.11549 feet ++#define METER_TO_NM 0.00053995680 ++ ++// Nautical Miles to Meters ++#define NM_TO_METER 1852.0000 ++ ++// Radians to Nautical Miles, 1 nm = 1/60 of a degree ++#define NM_TO_RAD 0.00029088820866572159 ++ ++// Nautical Miles to Radians ++#define RAD_TO_NM 3437.7467707849392526 ++ ++// For divide by zero avoidance, this will be close enough to zero ++#define FG_EPSILON 0.0000001 ++ ++ ++// Timing constants for Flight Model updates ++#define DEFAULT_TIMER_HZ 20 ++#define DEFAULT_MULTILOOP 6 ++#define DEFAULT_MODEL_HZ (DEFAULT_TIMER_HZ * DEFAULT_MULTILOOP) ++ ++ ++// Field of view limits ++#define FG_FOV_MIN 0.1 ++#define FG_FOV_MAX 179.9 ++ ++ ++// Maximum nodes per tile ++#define MAX_NODES 2000 ++ ++ ++#endif // _FG_CONSTANTS_H ++ ++ ++// $Log$ ++// Revision 1.13 1999/04/05 02:12:59 curt ++// Define maximum nodes for a tile here. ++// ++// Revision 1.12 1999/03/01 15:33:43 curt ++// Truth in advertising. ++// ++// Revision 1.11 1999/02/01 21:14:10 curt ++// Converted to C++ style comments. ++// ++// Revision 1.10 1999/01/27 04:45:19 curt ++// Tweak for solaris. ++// ++// Revision 1.9 1998/08/24 20:02:35 curt ++// Added ONE_SECOND (in radians) ++// ++// Revision 1.8 1998/07/12 03:07:13 curt ++// Added #ifdef HAVE_CONFIG_H ... ++// ++// Revision 1.7 1998/07/08 14:36:29 curt ++// Changed name of EQUATORIAL_RADIUS_KM and RESQ_KM to "M" since they were ++// in meters anyways. ++// ++// Unified fgCartesianPoint3d and fgPolarPoint3d in a single struct called ++// fgPoint3d. ++// ++// Revision 1.6 1998/07/03 14:36:11 curt ++// Added conversion constants to fg_constants.h to assist with converting ++// between various world units and coordinate systems. ++// Added gl vendor/renderer/version info to general structure. Initialized ++// in fg_init.cxx ++// ++// Revision 1.5 1998/05/17 16:56:47 curt ++// Re-organized PI related constants. ++// ++// Revision 1.4 1998/05/16 13:03:10 curt ++// Defined field of view max/min limits. ++// ++// Revision 1.3 1998/04/08 23:35:32 curt ++// Tweaks to Gnu automake/autoconf system. ++// ++// Revision 1.2 1998/03/23 21:18:37 curt ++// Made FG_EPSILON smaller. ++// ++// Revision 1.1 1998/01/27 00:46:50 curt ++// prepended "fg_" on the front of these to avoid potential conflicts with ++// system include files. ++// ++// Revision 1.3 1998/01/22 02:59:35 curt ++// Changed #ifdef FILE_H to #ifdef _FILE_H ++// ++// Revision 1.2 1998/01/07 03:31:26 curt ++// Miscellaneous tweaks. ++// ++// Revision 1.1 1997/12/15 21:02:15 curt ++// Moved to .../FlightGear/Src/Include/ ++// ++// Revision 1.10 1997/09/13 01:59:45 curt ++// Mostly working on stars and generating sidereal time for accurate star ++// placement. ++// ++// Revision 1.9 1997/08/22 21:34:32 curt ++// Doing a bit of reorganizing and house cleaning. ++// ++// Revision 1.8 1997/07/31 22:52:22 curt ++// Working on redoing internal coordinate systems & scenery transformations. ++// ++// Revision 1.7 1997/07/23 21:52:10 curt ++// Put comments around the text after an #endif for increased portability. ++// ++// Revision 1.6 1997/07/21 14:45:01 curt ++// Minor tweaks. ++// ++// Revision 1.5 1997/07/19 23:04:46 curt ++// Added an initial weather section. ++// ++// Revision 1.4 1997/07/19 22:37:03 curt ++// Added various PI definitions. ++// ++// Revision 1.3 1997/07/14 16:26:03 curt ++// Testing/playing -- placed objects randomly across the entire terrain. ++// ++// Revision 1.2 1997/07/08 18:20:11 curt ++// Working on establishing a hard ground. ++// ++// Revision 1.1 1997/07/07 21:02:36 curt ++// Initial revision. ++ diff --cc Include/fg_memory.h index 000000000,000000000..830dcba26 new file mode 100644 --- /dev/null +++ b/Include/fg_memory.h @@@ -1,0 -1,0 +1,67 @@@ ++// fg_memory.h -- memcpy/bcopy portability declarations ++// ++// This program 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 of the ++// License, or (at your option) any later version. ++// ++// This program 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 program; if not, write to the Free Software ++// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++// ++// $Id$ ++// (Log is kept at end of this file) ++ ++ ++#ifndef _FG_MEMORY_H ++#define _FG_MEMORY_H ++ ++#ifdef HAVE_CONFIG_H ++# include "config.h" ++#endif ++ ++#ifdef HAVE_MEMCPY ++ ++# ifdef HAVE_MEMORY_H ++# include ++# endif ++ ++# define fgmemcmp memcmp ++# define fgmemcpy memcpy ++# define fgmemzero(dest,len) memset(dest,0,len) ++ ++#elif defined(HAVE_BCOPY) ++ ++# define fgmemcmp bcmp ++# define fgmemcpy(dest,src,n) bcopy(src,dest,n) ++# define fgmemzero bzero ++ ++#else ++ ++/* ++ * Neither memcpy() or bcopy() available. ++ * Use substitutes provided be zlib. ++ */ ++ ++# include ++# define fgmemcmp zmemcmp ++# define fgmemcpy zmemcpy ++# define fgmemzero zmemzero ++ ++#endif ++ ++#endif // _FG_MEMORY_H ++ ++ ++// $Log$ ++// Revision 1.2 1998/12/09 18:47:39 curt ++// Use C++ style comments. ++// ++// Revision 1.1 1998/12/07 21:07:25 curt ++// Memory related portability improvements. ++// diff --cc Include/fg_stl_config.h index 000000000,000000000..100160e69 new file mode 100644 --- /dev/null +++ b/Include/fg_stl_config.h @@@ -1,0 -1,0 +1,1 @@@ ++#include diff --cc Include/fg_traits.hxx index 000000000,000000000..1547bcaa8 new file mode 100644 --- /dev/null +++ b/Include/fg_traits.hxx @@@ -1,0 -1,0 +1,23 @@@ ++#ifndef _FG_TRAITS_HXX ++#define _FG_TRAITS_HXX ++ ++#include "Include/compiler.h" ++ ++#ifndef FG_HAVE_TRAITS ++ ++// Dummy up some char traits for now. ++template struct char_traits{}; ++ ++FG_TEMPLATE_NULL ++struct char_traits ++{ ++ typedef char char_type; ++ typedef int int_type; ++ typedef streampos pos_type; ++ typedef streamoff off_type; ++ ++ static int_type eof() { return EOF; } ++}; ++#endif // FG_HAVE_TRAITS ++ ++#endif // _FG_TRAITS_HXX diff --cc Include/fg_typedefs.h index 000000000,000000000..ab398a379 new file mode 100644 --- /dev/null +++ b/Include/fg_typedefs.h @@@ -1,0 -1,0 +1,110 @@@ ++/* ++// Alterations: Copyright C. Hotchkiss 1996 ++// ++// $Log$ ++// Revision 1.2 1998/05/13 18:23:46 curt ++// fg_typedefs.h: updated version by Charlie Hotchkiss ++// general.h: moved fg_root info to fgOPTIONS structure. ++// ++// Revision 1.1 1998/05/11 18:26:12 curt ++// Initial revision. ++// ++// Rev 1.4 11 Nov 1997 15:34:28 CHOTCHKISS ++// Expanded definitions. ++// ++// Rev 1.3 20 Jan 1997 9:21:26 CHOTCHKISS ++// Minor additions. ++// ++// Rev 1.2 12 Nov 1996 15:06:52 CHOTCHKISS ++// Dropped PC Write print format control lines. ++// ++// Rev 1.1 20 Nov 1995 15:59:02 CHOTCHKISS ++// Additions and improvements. Memcheck compatibilities. ++// ++// Rev 1.0 06 Apr 1995 14:00:32 CHOTCHKISS ++// Initial revision. ++  ++*/ ++/* ++// TYPEDEFS.H - General purpose definition file ++// Copyright (C) 1992 Paradigm Systems. All rights reserved. ++// ++// Function ++// ======== ++// This file contains the general purpose definitions common to the ++// all Paradigm applications. By defining synonyms for the physical ++// data types to be manipulated, portability between memory models ++// and machines is maximized. ++// ++// Note that this file follows the system include files and before ++// any application include files. ++*/ ++ ++#if !defined(_TYPEDEFS) ++#define _TYPEDEFS ++ ++// ++// Define the types to be used to manipulate 8-, 16-, and 32-bit ++// data. ++// ++typedef unsigned int BIT ; // Use for defining Borland bit fields ++typedef char CHAR ; // 8-bit signed data ++typedef const char COCHAR; ++typedef unsigned char UCHAR ; // 8-bit unsigned data ++typedef unsigned char BYTE; ++typedef int INT ; // 16-bit signed data ++typedef unsigned int UINT ; // 16-bit unsigned data ++typedef const int COINT; // 16=bit constant int ++typedef const UINT COUINT; ++typedef long LONG ; // 32-bit signed data ++typedef unsigned long ULONG ; // 32-bit unsigned data ++ ++typedef unsigned short UWORD; // Unsigned 16 bit quantity (WIN=SHORT) ++#if !defined(WIN32) ++typedef signed short WORD; // Signed 16 bit quantity ++#endif ++typedef BYTE UBYTE; // Used in some 3rd party code ++#ifndef WIN32 ++typedef int BOOLEAN; // ++#endif ++ ++typedef float FLOAT ; // 32-bit floating point data ++typedef double DOUBLE ; // 64-bit floating point data ++typedef long double LDOUBLE ; // 80-bit floating point data ++ ++#ifndef __cplusplus ++typedef int bool; ++typedef int BOOL; ++typedef int Bool; ++#else ++#ifndef WIN32 ++#define BOOL int ++#endif ++#endif ++ ++#define Bool int ++ ++#ifndef TRUE ++#define TRUE 1 ++#define FALSE 0 ++#endif ++ ++#ifndef true // C++ defines bool, true and false. ++#define true TRUE ++#define false FALSE ++#endif ++ ++#ifndef EOF ++#define EOF (-1) ++#endif ++ ++typedef void(*VFNPTR) ( void ); ++typedef void(*VFNINTPTR)( int ); ++typedef int (*FNPTR) ( void ); ++typedef int (*FNINTPTR) ( int ); ++typedef int (*FNUIPTR) ( UINT ); ++typedef double( *DBLFNPTR)( void ); ++ ++#endif ++ ++ /* !defined(_TYPEDEFS) */ diff --cc Include/fg_zlib.h index 000000000,000000000..728094735 new file mode 100644 --- /dev/null +++ b/Include/fg_zlib.h @@@ -1,0 -1,0 +1,88 @@@ ++/************************************************************************** ++ * fg_zlib.h -- a zlib wrapper to replace zlib calls with normal uncompressed ++ * calls for systems that have problems building zlib. ++ * ++ * Written by Curtis Olson, started April 1998. ++ * ++ * Copyright (C) 1998 Curtis L. Olson - curt@me.umn.edu ++ * ++ * This program 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 of the ++ * License, or (at your option) any later version. ++ * ++ * This program 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 program; if not, write to the Free Software ++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++ * ++ * $Id$ ++ * (Log is kept at end of this file) ++ **************************************************************************/ ++ ++ ++#ifndef _FG_ZLIB_H ++#define _FG_ZLIB_H ++ ++ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ ++ ++#ifdef AVOID_USING_ZLIB ++ ++ #include ++ ++ #define fgFile FILE * ++ ++ /* fgFile fgopen(char *filename, const char *flags) */ ++ #define fgopen(P, F) (fopen((P), (F))) ++ ++ /* int fgseek(fgFile *file, long offset, int whence) */ ++ #define fgseek(F, O, W) (fseek((F), (O), (W))) ++ ++ /* fgread(fgFile file, void *buf, int size); */ ++ #define fgread(F, B, S) (fread((B), (S), 1, (F))) ++ ++ /* int fggets(fgFile fd, char *buffer, int len) */ ++ #define fggets(F, B, L) (fgets((B), (L), (F))) ++ ++ /* int fgclose(fgFile fd) */ ++ #define fgclose(F) (fclose((F))) ++#else ++ ++ #include ++ ++ #define fgFile gzFile ++ ++ /* fgFile fgopen(char *filename, const char *flags) */ ++ #define fgopen(P, F) (gzopen((P), (F))) ++ ++ /* int fgseek(fgFile *file, long offset, int whence) */ ++ #define fgseek(F, O, W) (gzseek((F), (O), (W))) ++ ++ /* fgread(fgFile file, void *buf, int size); */ ++ #define fgread(F, B, S) (gzread((F), (B), (S))) ++ ++ /* int fggets(fgFile fd, char *buffer, int len) */ ++ #define fggets(F, B, L) (gzgets((F), (B), (L))) ++ ++ /* int fgclose(fgFile fd) */ ++ #define fgclose(F) (gzclose((F))) ++ ++#endif /* #ifdef AVOID_USING_ZLIB #else #endif */ ++ ++ ++#endif /* _FG_ZLIB_H */ ++ ++ ++/* $Log$ ++/* Revision 1.1 1998/04/28 21:41:39 curt ++/* Initial revision of fg_zlib.h ++/* ++ */ diff --cc Include/general.hxx index 000000000,000000000..da934e861 new file mode 100644 --- /dev/null +++ b/Include/general.hxx @@@ -1,0 -1,0 +1,113 @@@ ++// general.hxx -- a general house keeping data structure definition for ++// various info that might need to be accessible from all ++// parts of the sim. ++// ++// Written by Curtis Olson, started July 1997. ++// ++// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com ++// ++// This program 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 of the ++// License, or (at your option) any later version. ++// ++// This program 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 program; if not, write to the Free Software ++// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++// ++// $Id$ ++// (Log is kept at end of this file) ++ ++ ++#ifndef _GENERAL_HXX ++#define _GENERAL_HXX ++ ++ ++#ifndef __cplusplus ++# error This library requires C++ ++#endif ++ ++ ++// #define FG_FRAME_RATE_HISTORY 10 ++ ++ ++// the general house keeping structure definition ++class FGGeneral { ++ // Info about OpenGL ++ char *glVendor; ++ char *glRenderer; ++ char *glVersion; ++ ++ // Last frame rate measurement ++ int frame_rate; ++ // double frames[FG_FRAME_RATE_HISTORY]; ++ ++public: ++ ++ inline void set_glVendor( char *str ) { glVendor = str; } ++ inline char* get_glRenderer() const { return glRenderer; } ++ inline void set_glRenderer( char *str ) { glRenderer = str; } ++ inline void set_glVersion( char *str ) { glVersion = str; } ++ inline double get_frame_rate() const { return frame_rate; } ++ inline void set_frame_rate( int rate ) { frame_rate = rate; } ++}; ++ ++// general contains all the general house keeping parameters. ++extern FGGeneral general; ++ ++ ++#endif // _GENERAL_HXX ++ ++ ++// $Log$ ++// Revision 1.1 1999/01/06 21:47:39 curt ++// renamed general.h to general.hxx ++// More portability enhancements to compiler.h ++// ++// Revision 1.9 1998/12/18 23:34:42 curt ++// Converted to a simpler frame rate calculation method. ++// ++// Revision 1.8 1998/08/20 15:09:46 curt ++// Added a status flat for instrument panel use. ++// ++// Revision 1.7 1998/07/03 14:36:11 curt ++// Added conversion constants to fg_constants.h to assist with converting ++// between various world units and coordinate systems. ++// Added gl vendor/renderer/version info to general structure. Initialized ++// in fg_init.cxx ++// ++// Revision 1.6 1998/05/13 18:23:46 curt ++// fg_typedefs.h: updated version by Charlie Hotchkiss ++// general.h: moved fg_root info to fgOPTIONS structure. ++// ++// Revision 1.5 1998/05/07 23:03:17 curt ++// Lowered size of frame rate history buffer. ++// ++// Revision 1.4 1998/05/06 03:14:30 curt ++// Added a shared frame rate counter. ++// ++// Revision 1.3 1998/03/14 00:27:58 curt ++// Promoted fgGENERAL to a "type" of struct. ++// ++// Revision 1.2 1998/01/22 02:59:35 curt ++// Changed #ifdef FILE_H to #ifdef _FILE_H ++// ++// Revision 1.1 1997/12/15 21:02:16 curt ++// Moved to .../FlightGear/Src/Include/ ++// ++// Revision 1.3 1997/12/10 22:37:34 curt ++// Prepended "fg" on the name of all global structures that didn't have it yet. ++// i.e. "struct WEATHER {}" became "struct fgWEATHER {}" ++// ++// Revision 1.2 1997/08/27 03:29:38 curt ++// Changed naming scheme of basic shared structures. ++// ++// Revision 1.1 1997/08/23 11:37:12 curt ++// Initial revision. ++// ++