/*============================================================================ CMake - Cross Platform Makefile Generator Copyright 2000-2009 Kitware, Inc., Insight Software Consortium Distributed under the OSI-approved BSD License (the "License"); see accompanying file Copyright.txt for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the License for more information. ============================================================================*/ /** * Include header files as a function of the build process, compiler, * and operating system. */ #ifndef cmStandardIncludes_h #define cmStandardIncludes_h #include #include #ifdef _MSC_VER #pragma warning(disable : 4786) #pragma warning(disable : 4503) #endif #ifdef __ICL #pragma warning(disable : 985) #pragma warning(disable : 1572) /* floating-point equality test */ #endif // Provide fixed-size integer types. #include #include #include #include #include // we must have stl with the standard include style #include #include #include #include #include #include #include // include the "c" string header #include #include #include #if defined(_MSC_VER) typedef unsigned short mode_t; #else #include #endif // use this class to shrink the size of symbols in .o files // std::string is really basic_string<....lots of stuff....> // when combined with a map or set, the symbols can be > 2000 chars! #include // typedef cmsys::String std::string; /* Poison this operator to avoid common mistakes. */ extern void operator<<(std::ostream&, const std::ostringstream&); /** Standard documentation entry for cmDocumentation's formatting. */ struct cmDocumentationEntry { std::string Name; std::string Brief; cmDocumentationEntry() {} cmDocumentationEntry(const char* doc[2]) { if (doc[0]) { this->Name = doc[0]; } if (doc[1]) { this->Brief = doc[1]; } } cmDocumentationEntry(const char* n, const char* b) { if (n) { this->Name = n; } if (b) { this->Brief = b; } } }; /** Data structure to represent a single command line. */ class cmCustomCommandLine : public std::vector { public: typedef std::vector Superclass; typedef Superclass::iterator iterator; typedef Superclass::const_iterator const_iterator; }; /** Data structure to represent a list of command lines. */ class cmCustomCommandLines : public std::vector { public: typedef std::vector Superclass; typedef Superclass::iterator iterator; typedef Superclass::const_iterator const_iterator; }; // All subclasses of cmCommand or cmCTestGenericHandler should // invoke this macro. #define cmTypeMacro(thisClass, superclass) \ virtual const char* GetNameOfClass() { return #thisClass; } \ typedef superclass Superclass; \ static bool IsTypeOf(const char* type) \ { \ if (!strcmp(#thisClass, type)) { \ return true; \ } \ return Superclass::IsTypeOf(type); \ } \ virtual bool IsA(const char* type) { return thisClass::IsTypeOf(type); } \ static thisClass* SafeDownCast(cmObject* c) \ { \ if (c && c->IsA(#thisClass)) { \ return static_cast(c); \ } \ return 0; \ } \ class cmTypeMacro_UseTrailingSemicolon enum cmTargetLinkLibraryType { GENERAL_LibraryType, DEBUG_LibraryType, OPTIMIZED_LibraryType }; #endif