X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=blobdiff_plain;f=saml%2Finternal.h;h=2392e1652504204a4e23d252d4d61fac9c3247e2;hp=aa0b8cee616bd5fc060d1fdfee291b5d37ab7103;hb=c9e0e2dc2e15d2004333db7f135947db13956b5e;hpb=096d14037ebd2271f8e116d13f742be853435816 diff --git a/saml/internal.h b/saml/internal.h index aa0b8ce..2392e16 100644 --- a/saml/internal.h +++ b/saml/internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2005 Internet2 + * Copyright 2001-2007 Internet2 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,6 +39,45 @@ #include "base.h" #include "SAMLConfig.h" +#include + +using namespace xercesc; + +// C99 defines LLONG_MIN, LLONG_MAX and ULLONG_MAX, but this part of +// C99 is not yet included into the C++ standard. +// GCC defines LONG_LONG_MIN, LONG_LONG_MAX and ULONG_LONG_MAX. +// Some compilers (such as Comeau C++ up to and including version 4.3.3) +// define nothing. In this last case we make a reasonable guess. +#ifndef LLONG_MIN +#if defined(LONG_LONG_MIN) +#define LLONG_MIN LONG_LONG_MIN +#elif SIZEOF_LONG_LONG == 8 +#define LLONG_MIN 0x8000000000000000LL +#endif +#endif + +#ifndef LLONG_MAX +#if defined(LONG_LONG_MAX) +#define LLONG_MAX LONG_LONG_MAX +#elif SIZEOF_LONG_LONG == 8 +#define LLONG_MAX 0x7fffffffffffffffLL +#endif +#endif + +#ifndef ULLONG_MAX +#if defined(ULONG_LONG_MAX) +#define ULLONG_MAX ULONG_LONG_MAX +#elif SIZEOF_UNSIGNED_LONG_LONG == 8 +#define ULLONG_MAX 0xffffffffffffffffULL +#endif +#endif + +#if SIZEOF_TIME_T == 8 +# define SAMLTIME_MAX LLONG_MAX +#elif SIZEOF_TIME_T == 4 +# define SAMLTIME_MAX INT_MAX +#endif + #define SAML_LOGCAT "OpenSAML" namespace opensaml { @@ -52,12 +91,13 @@ namespace opensaml { static SAMLInternalConfig& getInternalConfig(); // global per-process setup and shutdown of runtime - bool init(); - void term(); + bool init(bool initXMLTooling=true); + void term(bool termXMLTooling=true); void generateRandomBytes(void* buf, unsigned int len); void generateRandomBytes(std::string& buf, unsigned int len); XMLCh* generateIdentifier(); + std::string hashSHA1(const char* data, bool toHex=false); private: }; /// @endcond