/*************************************************************** * * Copyright (C) 1990-2007, Condor Team, Computer Sciences Department, * University of Wisconsin-Madison, WI. * * Licensed under the Apache License, Version 2.0 (the "License"); you * may not use this file except in compliance with the License. You may * obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ***************************************************************/ #ifndef __CLASSAD_COMMON_H__ #define __CLASSAD_COMMON_H__ #ifndef WIN32 #include #endif #if defined( WANT_CLASSAD_NAMESPACE ) && defined(__cplusplus) #define BEGIN_NAMESPACE( x ) namespace x { #define END_NAMESPACE } #else #define BEGIN_NAMESPACE( x ) #define END_NAMESPACE #endif #ifndef _GNU_SOURCE #define _GNU_SOURCE /* to get definition for strptime on Linux */ #endif #ifndef __EXTENSIONS__ #define __EXTENSIONS__ /* to get gmtime_r and localtime_r on Solaris */ #endif #ifdef WIN32 // These must be defined before any of the // other headers are pulled in. #define _STLP_NEW_PLATFORM_SDK #define _STLP_NO_OWN_IOSTREAMS 1 // Disable warnings about calling posix functions like open() // instead of _open() #define _CRT_NONSTDC_NO_WARNINGS // Disable warnings about possible loss of data, since "we know what // we are doing" and fixing them correctly would require too much // time from one of us. (Maybe this should be a student exercise.) #pragma warning( disable : 4244 ) #endif /* WIN32 */ #include #include #include #include #include #ifndef WIN32 #include #define DLL_IMPORT_MAGIC /* a no-op on Unix */ #endif #include #include #ifdef WIN32 // special definitions we need for Windows #ifndef DLL_IMPORT_MAGIC #define DLL_IMPORT_MAGIC __declspec(dllimport) #endif #include #include #include #define fsync _commit #define strcasecmp _stricmp #ifndef rint #define rint(num) floor(num + .5) #endif #define isnan _isnan // isinf() defined in util.h #include #define snprintf _snprintf // Disable warnings about multiple template instantiations // (done for gcc) #pragma warning( disable : 4660 ) // Disable warnings about forcing bools #pragma warning( disable : 4800 ) // Disable warnings about truncated debug identifiers #pragma warning( disable : 4786 ) #endif // WIN32 #include "classad/debug.h" #ifdef __cplusplus #include #endif #include #include BEGIN_NAMESPACE( classad ) extern const char * const ATTR_AD; extern const char * const ATTR_CONTEXT; extern const char * const ATTR_DEEP_MODS; extern const char * const ATTR_DELETE_AD; extern const char * const ATTR_DELETES; extern const char * const ATTR_KEY; extern const char * const ATTR_NEW_AD; extern const char * const ATTR_OP_TYPE; extern const char * const ATTR_PARENT_VIEW_NAME; extern const char * const ATTR_PARTITION_EXPRS; extern const char * const ATTR_PARTITIONED_VIEWS; extern const char * const ATTR_PROJECT_THROUGH; extern const char * const ATTR_RANK_HINTS; extern const char * const ATTR_REPLACE; extern const char * const ATTR_SUBORDINATE_VIEWS; extern const char * const ATTR_UPDATES; extern const char * const ATTR_WANT_LIST; extern const char * const ATTR_WANT_PRELUDE; extern const char * const ATTR_WANT_RESULTS; extern const char * const ATTR_WANT_POSTLUDE; extern const char * const ATTR_VIEW_INFO; extern const char * const ATTR_VIEW_NAME; extern const char * const ATTR_XACTION_NAME; extern const char * const ATTR_REQUIREMENTS; extern const char * const ATTR_RANK; #if defined(__cplusplus) struct CaseIgnLTStr { bool operator( )( const std::string &s1, const std::string &s2 ) const { return( strcasecmp( s1.c_str( ), s2.c_str( ) ) < 0 ); } }; struct CaseIgnEqStr { bool operator( )( const std::string &s1, const std::string &s2 ) const { return( strcasecmp( s1.c_str( ), s2.c_str( ) ) == 0 ); } }; class ExprTree; struct ExprHash { size_t operator()( const ExprTree *const &x ) const { return( (size_t)x ); } }; struct StringHash { size_t operator()( const std::string &s ) const { unsigned long h = 0; char const *ch; for( ch = s.c_str(); *ch; ch++ ) { h = 5*h + (unsigned char)*ch; } return (size_t)h; } }; struct StringCaseIgnHash #ifdef WIN32 : public stdext::hash_compare #endif { size_t operator()( const std::string &s ) const { unsigned long h = 0; char const *ch; for( ch = s.c_str(); *ch; ch++ ) { h = 5*h + (unsigned char)tolower(*ch); } return (size_t)h; } #ifdef WIN32 // On Windows, the hash_map comparison operator is less-than, // not equal-to. bool operator( )( const std::string &s1, const std::string &s2 ) const { return( strcasecmp( s1.c_str( ), s2.c_str( ) ) < 0 ); } #endif }; extern std::string CondorErrMsg; #endif extern int CondorErrno; END_NAMESPACE // classad char* strnewp( const char* ); #include "classad/classadErrno.h" #endif//__CLASSAD_COMMON_H__