#ifndef EXPORT #define EXPORT #endif #if _MSC_VER == 1020 // Microsoft Visual C++ 4.2 #define PRACTICALOO_MUST_USE_ALLOCATOR #define PRACTICALOO_NEED_PI #define PRACTICALOO_MIN_MAX_CONFLICT #endif #if _MSC_VER == 1100 // Microsoft Visual C++ 5.0 #define PRACTICALOO_NEED_PI #define PRACTICALOO_COMPILER_UNREASONABLY_INSISTS_ON_COMPARISON_OPERATORS_FOR_VECTORS #define PRACTICALOO_GETLINE_BROKEN #define PRACTICALOO_MIN_MAX_CONFLICT #endif #ifdef __BORLANDC__ #define PRACTICALOO_ANONYMOUS_OBJECT_PARAMS_CAUSE_INTERNAL_ERROR #endif #ifdef PRACTICALOO_OLD_INCLUDE #include #include "vector.h" #include "string.h" #else #include #include #include #endif #ifndef PRACTICALOO_NO_STD_NAMESPACE using namespace std; #endif #ifdef PRACTICALOO_NEED_PI #define M_PI 3.14159265358979323846 #endif #ifdef PRACTICALOO_GETLINE_BROKEN /* the meatheads at Microsoft did it again. In MSVC5.0, a call to getline(cin,s) forces you to be clairvoyant and enter the NEXT line of input before the current one is processed. Here is an inefficient quick fix. */ inline istream& getline(istream& is, string& s) { s = ""; int ch; while ((ch = is.get()) != EOF && ch != '\n') s = s + (char)ch; return is; } #endif