From ed6883769a03b36402c2c78b1dcee0c7efeb70bc Mon Sep 17 00:00:00 2001 From: Michael Krelin Date: Thu, 27 Dec 2007 00:08:36 +0000 Subject: changed auto_ptr to shared_ptr Signed-off-by: Michael Krelin --- diff --git a/acinclude.m4 b/acinclude.m4 index 80defc7..fbb4cdc 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -163,4 +163,21 @@ AC_DEFUN([AC_WITH_PCREPP],[ fi ]) +dnl AC_CHECK_SHAREDPTR(NS,HEADER[,ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]]) +AC_DEFUN([AC_CHECK_SHAREDPTR],[ + AC_LANG_PUSH([C++]) + AC_MSG_CHECKING([for $1::shared_ptr<> in $2]) + AC_COMPILE_IFELSE([ + #include <$2> + int main(int c,char**v) { $1::shared_ptr spi(new int(0)); return *spi; } + ],[ + AC_MSG_RESULT([found]) + $3 + ],[ + AC_MSG_RESULT([not found]) + $4 + ]) + AC_LANG_POP([C++]) +]) + m4_include([acinclude.d/libcurl.m4]) diff --git a/configure.ac b/configure.ac index 1bd1873..c4e9a74 100644 --- a/configure.ac +++ b/configure.ac @@ -26,6 +26,37 @@ AC_MSG_RESULT([$PACKAGE_SRC_VERSION]) AC_SUBST([PACKAGE_SRC_VERSION]) AC_DEFINE_UNQUOTED([PACKAGE_SRC_VERSION],["$PACKAGE_SRC_VERSION"],[more or less precise source tree version]) +tr1_mem_std="false" +tr1_mem_boost="false" +AC_CHECK_SHAREDPTR(std::tr1,tr1/memory,[ tr1_mem_std=true ]) +AC_CHECK_SHAREDPTR(boost,boost/shared_ptr.hpp,[ tr1_mem_boost=true ]) +tr1_mem="" +AC_ARG_WITH([tr1-memory], + AC_HELP_STRING([--with-tr1-memory=],[select tr1/memory (shared_ptr<>) implementation to use]), + [ tr1_mem="$withval" ] +) +AC_MSG_CHECKING([for tr1/memory implementation to use]) +test -z "$tr1_mem" && $tr1_mem_std && tr1_mem=std +test -z "$tr1_mem" && $tr1_mem_boost && tr1_mem=boost +test -z "$tr1_mem" && AC_MSG_RESULT([none found]) || AC_MSG_RESULT([$tr1_mem]) +case "$tr1_mem" in + std) + $tr1_mem_std || AC_MSG_ERROR([std implementation requested, but not found]) + OPKELE_TR1_MEM_NS=std::tr1 + OPKELE_TR1_MEM_HEADER=tr1/memory + ;; + boost) + $tr1_mem_boost || AC_MSG_ERROR([boost implementation requested, but not found]) + OPKELE_TR1_MEM_NS=boost + OPKELE_TR1_MEM_HEADER=boost/shared_ptr.hpp + ;; + *) + AC_MSG_ERROR([no shared_ptr<> implementation found]) + ;; +esac +AC_SUBST([OPKELE_TR1_MEM_NS]) +AC_SUBST([OPKELE_TR1_MEM_HEADER]) + PKG_CHECK_MODULES([OPENSSL],[openssl],,[ AC_MSG_ERROR([no openssl library found. get one from http://www.openssl.org/]) ]) @@ -144,6 +175,7 @@ AC_CONFIG_FILES([ libopkele.pc Doxyfile include/Makefile + include/opkele/tr1-mem.h lib/Makefile test/Makefile ]) diff --git a/include/Makefile.am b/include/Makefile.am index 078c6dc..26cb614 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -12,7 +12,8 @@ nobase_include_HEADERS = \ opkele/xconsumer.h \ opkele/xserver.h \ opkele/discovery.h \ - opkele/uris.h + opkele/uris.h \ + opkele/tr1-mem.h EXTRA_DIST = \ opkele/data.h \ opkele/curl.h opkele/expat.h \ diff --git a/include/opkele/consumer.h b/include/opkele/consumer.h index c463787..3c1d318 100644 --- a/include/opkele/consumer.h +++ b/include/opkele/consumer.h @@ -31,7 +31,7 @@ namespace opkele { * @param handle association handle * @param secret the secret associated with the server and handle * @param expires_in the number of seconds until the handle is expired - * @return the auto_ptr<> for the newly allocated association_t object + * @return the assoc_t for the newly allocated association_t object */ virtual assoc_t store_assoc(const string& server,const string& handle,const secret_t& secret,int expires_in) = 0; /** @@ -73,7 +73,7 @@ namespace opkele { * middle of negotiations. * * @param server the OpenID server - * @return the auto_ptr<> for the newly allocated association_t object + * @return the assoc_t for the newly allocated association_t object * @throw failed_lookup in case of absence of the handle */ virtual assoc_t find_assoc(const string& server); @@ -93,7 +93,7 @@ namespace opkele { /** * perform the associate request to OpenID server. * @param server the OpenID server - * @return the auto_ptr<> for the newly allocated association_t + * @return the assoc_t for the newly allocated association_t * object, representing established association * @throw exception in case of error */ diff --git a/include/opkele/server.h b/include/opkele/server.h index dd7fc41..3c25646 100644 --- a/include/opkele/server.h +++ b/include/opkele/server.h @@ -25,7 +25,7 @@ namespace opkele { * store. * @param mode the mode of request being processed to base the * statelessness of the association upon - * @return the auto_ptr<> for the newly allocated association_t object + * @return the assoc_t for the newly allocated association_t object */ virtual assoc_t alloc_assoc(mode_t mode) = 0; /** @@ -33,7 +33,7 @@ namespace opkele { * the reqal implementation to provide persistent assocations * store. * @param h association handle - * @return the auto_ptr<> for the newly allocated association_t object + * @return the assoc_t for the newly allocated association_t object * @throw failed_lookup in case of failure */ virtual assoc_t retrieve_assoc(const string& h) = 0; diff --git a/include/opkele/types.h b/include/opkele/types.h index ca07df5..d959021 100644 --- a/include/opkele/types.h +++ b/include/opkele/types.h @@ -10,15 +10,14 @@ #include #include #include -#include #include +#include namespace opkele { using std::vector; using std::string; using std::map; using std::ostream; - using std::auto_ptr; using std::multimap; using std::set; @@ -108,9 +107,9 @@ namespace opkele { }; /** - * the auto_ptr<> for association_t object type + * the shared_ptr<> for association_t object type */ - typedef auto_ptr assoc_t; + typedef tr1mem::shared_ptr assoc_t; /** * request/response parameters map -- cgit v0.9.0.2