* Please see the COPYING and CONTRIBUTORS files for details.
*/
-#ifndef SQUID_BASE_CTOCPPDTOR_H
-#define SQUID_BASE_CTOCPPDTOR_H
+#ifndef SQUID_BASE_MAKEFUNCTOR_H
+#define SQUID_BASE_MAKEFUNCTOR_H
-#include <memory>
-
-// Macro to be used to define the C++ equivalent functor of an extern "C"
-// function. The C++ functor is suffixed with the _cpp extension
-#define CtoCppDtor(function, argument_type) \
- struct function ## _cpp { \
+// Macro to be used to define a C++ functor of an extern "C"
+// function. The C++ functor is suffixed with the _functor extension
+#define UniaryFunctor(function, argument_type) \
+ struct function ## _functor { \
void operator()(argument_type a) { function(a); } \
}
/// DeAllocator functor for pointers that need free(3) from the std C library
-CtoCppDtor(xfree, char *);
+UniaryFunctor(xfree, char *);
-#endif // SQUID_BASE_CTOCPPDTOR_H
+#endif // SQUID_BASE_MAKEFUNCTOR_H
#ifndef SQUID_SRC_SECURITY_SESSION_H
#define SQUID_SRC_SECURITY_SESSION_H
-#include "base/CtoCppDtor.h"
+#include "base/MakeFunctor.h"
#include "security/LockingPointer.h"
+#include <memory>
+
#if USE_OPENSSL
#if HAVE_OPENSSL_SSL_H
#include <openssl/ssl.h>
#elif USE_GNUTLS
typedef gnutls_session_t SessionPtr;
-CtoCppDtor(gnutls_deinit, gnutls_session_t);
+UniaryFunctor(gnutls_deinit, gnutls_session_t);
// TODO: Convert to Locking pointer.
// Locks can be implemented attaching locks counter to gnutls_session_t
// objects using the gnutls_session_set_ptr()/gnutls_session_get_ptr ()
// library functions
-typedef std::unique_ptr<struct gnutls_session_int, Security::gnutls_deinit_cpp> SessionPointer;
+typedef std::unique_ptr<struct gnutls_session_int, Security::gnutls_deinit_functor> SessionPointer;
#else
// use void* so we can check against NULL
CtoCpp1(EVP_PKEY_free, EVP_PKEY *)
typedef Security::LockingPointer<EVP_PKEY, EVP_PKEY_free_cpp, CRYPTO_LOCK_EVP_PKEY> EVP_PKEY_Pointer;
-CtoCppDtor(BN_free, BIGNUM *);
-typedef std::unique_ptr<BIGNUM, BN_free_cpp> BIGNUM_Pointer;
+UniaryFunctor(BN_free, BIGNUM *);
+typedef std::unique_ptr<BIGNUM, BN_free_functor> BIGNUM_Pointer;
-CtoCppDtor(BIO_free, BIO *);
-typedef std::unique_ptr<BIO, BIO_free_cpp> BIO_Pointer;
+UniaryFunctor(BIO_free, BIO *);
+typedef std::unique_ptr<BIO, BIO_free_functor> BIO_Pointer;
-CtoCppDtor(ASN1_INTEGER_free, ASN1_INTEGER *);
-typedef std::unique_ptr<ASN1_INTEGER, ASN1_INTEGER_free_cpp> ASN1_INT_Pointer;
+UniaryFunctor(ASN1_INTEGER_free, ASN1_INTEGER *);
+typedef std::unique_ptr<ASN1_INTEGER, ASN1_INTEGER_free_functor> ASN1_INT_Pointer;
-CtoCppDtor(ASN1_OCTET_STRING_free, ASN1_OCTET_STRING *);
-typedef std::unique_ptr<ASN1_OCTET_STRING, ASN1_OCTET_STRING_free_cpp> ASN1_OCTET_STRING_Pointer;
+UniaryFunctor(ASN1_OCTET_STRING_free, ASN1_OCTET_STRING *);
+typedef std::unique_ptr<ASN1_OCTET_STRING, ASN1_OCTET_STRING_free_functor> ASN1_OCTET_STRING_Pointer;
-CtoCppDtor(TXT_DB_free, TXT_DB *);
-typedef std::unique_ptr<TXT_DB, TXT_DB_free_cpp> TXT_DB_Pointer;
+UniaryFunctor(TXT_DB_free, TXT_DB *);
+typedef std::unique_ptr<TXT_DB, TXT_DB_free_functor> TXT_DB_Pointer;
-CtoCppDtor(X509_NAME_free, X509_NAME *);
-typedef std::unique_ptr<X509_NAME, X509_NAME_free_cpp> X509_NAME_Pointer;
+UniaryFunctor(X509_NAME_free, X509_NAME *);
+typedef std::unique_ptr<X509_NAME, X509_NAME_free_functor> X509_NAME_Pointer;
-CtoCppDtor(RSA_free, RSA *);
-typedef std::unique_ptr<RSA, RSA_free_cpp> RSA_Pointer;
+UniaryFunctor(RSA_free, RSA *);
+typedef std::unique_ptr<RSA, RSA_free_functor> RSA_Pointer;
-CtoCppDtor(X509_REQ_free, X509_REQ *);
-typedef std::unique_ptr<X509_REQ, X509_REQ_free_cpp> X509_REQ_Pointer;
+UniaryFunctor(X509_REQ_free, X509_REQ *);
+typedef std::unique_ptr<X509_REQ, X509_REQ_free_functor> X509_REQ_Pointer;
sk_dtor_wrapper(sk_X509_NAME, STACK_OF(X509_NAME) *, X509_NAME_free);
typedef std::unique_ptr<STACK_OF(X509_NAME), sk_X509_NAME_free_wrapper> X509_NAME_STACK_Pointer;
-CtoCppDtor(AUTHORITY_KEYID_free, AUTHORITY_KEYID *);
-typedef std::unique_ptr<AUTHORITY_KEYID, AUTHORITY_KEYID_free_cpp> AUTHORITY_KEYID_Pointer;
+UniaryFunctor(AUTHORITY_KEYID_free, AUTHORITY_KEYID *);
+typedef std::unique_ptr<AUTHORITY_KEYID, AUTHORITY_KEYID_free_functor> AUTHORITY_KEYID_Pointer;
sk_dtor_wrapper(sk_GENERAL_NAME, STACK_OF(GENERAL_NAME) *, GENERAL_NAME_free);
typedef std::unique_ptr<STACK_OF(GENERAL_NAME), sk_GENERAL_NAME_free_wrapper> GENERAL_NAME_STACK_Pointer;
-CtoCppDtor(GENERAL_NAME_free, GENERAL_NAME *);
-typedef std::unique_ptr<GENERAL_NAME, GENERAL_NAME_free_cpp> GENERAL_NAME_Pointer;
+UniaryFunctor(GENERAL_NAME_free, GENERAL_NAME *);
+typedef std::unique_ptr<GENERAL_NAME, GENERAL_NAME_free_functor> GENERAL_NAME_Pointer;
-CtoCppDtor(X509_EXTENSION_free, X509_EXTENSION *);
-typedef std::unique_ptr<X509_EXTENSION, X509_EXTENSION_free_cpp> X509_EXTENSION_Pointer;
+UniaryFunctor(X509_EXTENSION_free, X509_EXTENSION *);
+typedef std::unique_ptr<X509_EXTENSION, X509_EXTENSION_free_functor> X509_EXTENSION_Pointer;
/**
\ingroup SslCrtdSslAPI