//==================================================================================================
// I n f o r m a t i o n                                                                  Interface
//                                                                                By Bruno Bachelet
//==================================================================================================
// Copyright (c) 1999-2016
// Bruno Bachelet - bruno@nawouak.net - http://www.nawouak.net
//
// This file is part of the B++ Library. This library is free software; you can redistribute it
// and/or modify it under the terms of the GNU Library General Public License as published by the
// Free Software Foundation; either version 2 of the License, 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 Library General Public License for more details (http://www.gnu.org).

/*DESCRIPTION*/
/* This module contains general information about the library. Note that it includes the
   <CODE>options.hpp</CODE> header file that is a file created by the programmer when compiling
   a program based on the B++ Library. For more information, see "How to Create a Program Based
   on the B++ Library ?". */

// File Name //-------------------------------------------------------------------------------------
#line __LINE__ "information.hpp"

// Guardian //--------------------------------------------------------------------------------------
#ifndef guInformation
#define guInformation

// Headers //---------------------------------------------------------------------------------------
#include <options.hpp> /*INCLUDE*/

// Environment Information //-----------------------------------------------------------------------
/*MACROCOMMAND*/ /* Copyright of the library. */
#define COPYRIGHT "Copyright (c) 1999-2016"

/*MACROCOMMAND*/ /* Date of the last modification of the library. */
#define LAST_UPDATE "12 July 2016"

/*MACROCOMMAND*/ /* E-mail of the programmer. */
#define PROGRAMMER_EMAIL "bruno@nawouak.net"

/*MACROCOMMAND*/ /* Name of the programmer. */
#define PROGRAMMER_NAME "Bruno Bachelet"

/*MACROCOMMAND*/ /* URL of the programmer. */
#define PROGRAMMER_URL "http://www.nawouak.net"

#ifdef CONSOLE
 /*MACROCOMMAND*/ /* Description of the operating system. */
 #define OPERATING_SYSTEM "Microsoft Console (32 bits)"
#endif

#ifdef CYGWIN
 #define OPERATING_SYSTEM "Cygwin"
#endif

#ifdef WINDOWS
 #define OPERATING_SYSTEM "Microsoft Windows (32 bits)"
#endif

#ifdef AIX
 #define OPERATING_SYSTEM "AIX"
#endif

#ifdef LINUX
 #define OPERATING_SYSTEM "Linux"
#endif

#ifdef SOLARIS
 #define OPERATING_SYSTEM "Solaris"
#endif

#ifndef OPERATING_SYSTEM
 #define OPERATING_SYSTEM "Unknown"
#endif

#ifdef TESTING_MODE
 /*MACROCOMMAND*/ /* Name of the environment variable that contains the location of the library. */
 #define BPP_TOOLS_ENVIRONMENT_VARIABLE "BPP_TESTING"
#else
 #define BPP_TOOLS_ENVIRONMENT_VARIABLE "BPP_TOOLS"
#endif

// Linear Program Solvers Information //------------------------------------------------------------
/*MACROCOMMAND*/ /* Description of the version of the AMPL program the library is designed for. */
#define AMPL_VERSION "AMPL Student Version 02/09/1999"

/*MACROCOMMAND*/ /* Description of the version of the CPLEX program the library is designed for. */
#define CPLEX_VERSION "CPLEX Linear Optimizer 11.0"

/*MACROCOMMAND*/ /* Description of the version of the GLPK package the library is designed for. */
#define GLPK_VERSION "GNU Linear Programming Kit 4.54"

// Types Information //-----------------------------------------------------------------------------
/*MACROCOMMAND*/ /* Type representing booleans. */
#define BOOLEAN_TYPE bool

/*MACROCOMMAND*/ /* Type representing bytes (positive integers). */
#define BYTE_TYPE unsigned char

/*MACROCOMMAND*/
/* Type representing cardinals (positive integers used to count elements in the memory). */
#define CARDINAL_TYPE unsigned int

/*MACROCOMMAND*/ /* Type representing characters (signed or unsigned integers). */
#define CHARACTER_TYPE char

/*MACROCOMMAND*/ /* Type representing signed integers. */
#define INTEGER_TYPE signed int

/*MACROCOMMAND*/ /* Type representing signed real numbers. */
#define REAL_TYPE double

/*MACROCOMMAND*/ /* Standard return type of the basic C functions. */
#define RETURN_TYPE int

/*MACROCOMMAND*/ /* Maximum byte value. */
#define BYTE_MAX 255

/*MACROCOMMAND*/ /* Maximum cardinal value. */
#define CARDINAL_MAX UINT_MAX

/*MACROCOMMAND*/ /* Maximum character value. */
#define CHARACTER_MAX CHAR_MAX

/*MACROCOMMAND*/ /* Minimum character value. */
#define CHARACTER_MIN CHAR_MIN

/*MACROCOMMAND*/ /* Maximum integer value. */
#define INTEGER_MAX INT_MAX

/*MACROCOMMAND*/ /* Minimum integer value. */
#define INTEGER_MIN INT_MIN

/*MACROCOMMAND*/ /* Maximum real value. */
#define REAL_MAX DBL_MAX

/*MACROCOMMAND*/ /* Minimum real value. */
#define REAL_MIN -DBL_MAX

/*MACROCOMMAND*/ /* Maximal decimal precision of real numbers. */
#define REAL_DECIMAL_PRECISION DBL_DIG

/*MACROCOMMAND*/ /* Maximum positive real value that is considered to be equal to zero. */
#define REAL_EPSILON DBL_EPSILON

/*MACROCOMMAND*/ /* Smallest positive real value that can be represented. */
#define REAL_SMALLEST DBL_MIN

// Stream Buffer //---------------------------------------------------------------------------------
/*MACROCOMMAND*/ /* Size of the buffer for the stream readings and writings. */
#define STREAM_BUFFER_SIZE 131072u

// Class Numbering //-------------------------------------------------------------------------------
/*MACROCOMMAND*/
/* Maximum size a set of classes can not exceed to be numbered,
   used in the <CODE>Standard/Class</CODE> module. */
#define CLASS_NUMBERING_SIZE 1000

// End //-------------------------------------------------------------------------------------------
#endif