summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--acinclude.m417
-rw-r--r--configure.ac32
-rw-r--r--include/Makefile.am3
-rw-r--r--include/opkele/consumer.h6
-rw-r--r--include/opkele/server.h4
-rw-r--r--include/opkele/types.h7
6 files changed, 59 insertions, 10 deletions
diff --git a/acinclude.m4 b/acinclude.m4
index 80defc7..fbb4cdc 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -162,5 +162,22 @@ AC_DEFUN([AC_WITH_PCREPP],[
fi
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<int> 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
@@ -25,8 +25,39 @@ fi
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=<boost|std>],[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/])
])
@@ -143,8 +174,9 @@ AC_CONFIG_FILES([
Makefile
libopkele.pc
Doxyfile
include/Makefile
+ include/opkele/tr1-mem.h
lib/Makefile
test/Makefile
])
AC_OUTPUT
diff --git a/include/Makefile.am b/include/Makefile.am
index 078c6dc..26cb614 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -11,9 +11,10 @@ nobase_include_HEADERS = \
opkele/extension_chain.h \
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 \
opkele/util.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
@@ -30,9 +30,9 @@ namespace opkele {
* @param server the OpenID server
* @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;
/**
* retrieve stored association. The function should be overridden
@@ -72,9 +72,9 @@ namespace opkele {
* their time is really up to avoid association expiry in the
* 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);
@@ -92,9 +92,9 @@ 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
*/
assoc_t associate(const string& server);
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
@@ -24,17 +24,17 @@ namespace opkele {
* in the real implementation to provide persistent assocations
* 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;
/**
* retrieve the association. The function should be overridden in
* 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
@@ -9,17 +9,16 @@
#include <ostream>
#include <vector>
#include <string>
#include <map>
-#include <memory>
#include <set>
+#include <opkele/tr1-mem.h>
namespace opkele {
using std::vector;
using std::string;
using std::map;
using std::ostream;
- using std::auto_ptr;
using std::multimap;
using std::set;
/**
@@ -107,11 +106,11 @@ namespace opkele {
virtual bool is_expired() const = 0;
};
/**
- * the auto_ptr<> for association_t object type
+ * the shared_ptr<> for association_t object type
*/
- typedef auto_ptr<association_t> assoc_t;
+ typedef tr1mem::shared_ptr<association_t> assoc_t;
/**
* request/response parameters map
*/