# USE_CLANGPP is no longer used, keep it by summetry with USE_GXX?
AM_CONDITIONAL(USE_CLANGPP, test "X${CLANGPP}" = "Xyes")
+# Check for std::unique_ptr and aggregate initialization (aka C++11) support
+retried=0
+CXX_SAVED=$CXX
+for retry in "--std=c++11" "--std=c++0x" "--std=c++1x"; do
+ AC_MSG_CHECKING(std::unique_ptr support)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <memory>],
+ [std::unique_ptr<int> a;])],
+ [AC_MSG_RESULT([yes])],
+ [AC_MSG_RESULT([no])
+ if test $retried -eq 0; then
+ AC_MSG_WARN([unsupported C++11 feature])
+ fi
+ if test $retried -ge 3; then
+ AC_MSG_ERROR([std::unique_ptr (a C++11 feature) is not supported])
+ fi
+ AC_MSG_NOTICE([retrying by adding $retry to $CXX])
+ retried=`expr $retried + 1`
+ CXX="$CXX_SAVED $retry"
+ continue])
+
+ AC_MSG_CHECKING(aggregate initialization support)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <vector>],
+ [std::vector<int> foo = { 1, 2, 3};])],
+ [AC_MSG_RESULT([yes])
+ break],
+ [AC_MSG_RESULT([no])
+ if test $retried -eq 0; then
+ AC_MSG_WARN([unsupported C++11 feature])
+ fi
+ if test $retried -ge 3; then
+ AC_MSG_ERROR([aggregate initialization (a C++11 feature) is not supported])
+ fi
+ AC_MSG_NOTICE([retrying by adding $retry to $CXX])
+ retried=`expr $retried + 1`
+ CXX="$CXX_SAVED $retry"
+ continue])
+done
+
dnl Determine if we are using GNU sed
GNU_SED=no
$SED --version 2> /dev/null | grep GNU > /dev/null 2>&1
-// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <dns/master_loader.h>
#include <dns/master_lexer.h>
#include <dns/name.h>
#include <cstdio> // for sscanf()
using std::string;
-using std::auto_ptr;
+using std::unique_ptr;
using std::vector;
using std::pair;
using boost::algorithm::iequals;
if (add_callback.empty()) {
isc_throw(isc::InvalidParameter, "Empty add RR callback");
}
- auto_ptr<MasterLoaderImpl> impl(new MasterLoaderImpl("", zone_origin,
- zone_class, callbacks,
- add_callback,
- options));
+ unique_ptr<MasterLoaderImpl>
+ impl(new MasterLoaderImpl("", zone_origin, zone_class,
+ callbacks, add_callback, options));
impl->pushStreamSource(stream);
impl_ = impl.release();
}
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <exceptions/exceptions.h>
#include <util/buffer.h>
Generic::Generic(const std::string& rdata_string) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the GenericImpl that constructFromLexer() returns.
- std::auto_ptr<GenericImpl> impl_ptr(NULL);
+ std::unique_ptr<GenericImpl> impl_ptr;
try {
std::istringstream ss(rdata_string);
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <string>
#include <sstream>
#include <vector>
///
/// \param tsig_str A string containing the RDATA to be created
TSIG::TSIG(const std::string& tsig_str) : impl_(NULL) {
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the TSIGImpl that constructFromLexer() returns.
- std::auto_ptr<TSIGImpl> impl_ptr(NULL);
+ std::unique_ptr<TSIGImpl> impl_ptr;
try {
std::istringstream ss(tsig_str);
-// Copyright (C) 2014-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
CAA::CAA(const string& caa_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the CAAImpl that constructFromLexer() returns.
- std::auto_ptr<CAAImpl> impl_ptr(NULL);
+ std::unique_ptr<CAAImpl> impl_ptr;
try {
std::istringstream ss(caa_str);
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <iostream>
#include <string>
#include <sstream>
DNSKEY::DNSKEY(const std::string& dnskey_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the DNSKEYImpl that constructFromLexer() returns.
- std::auto_ptr<DNSKEYImpl> impl_ptr(NULL);
+ std::unique_ptr<DNSKEYImpl> impl_ptr;
try {
std::istringstream ss(dnskey_str);
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <iostream>
#include <iomanip>
#include <string>
NSEC3::NSEC3(const std::string& nsec3_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the NSEC3Impl that constructFromLexer() returns.
- std::auto_ptr<NSEC3Impl> impl_ptr(NULL);
+ std::unique_ptr<NSEC3Impl> impl_ptr;
try {
std::istringstream ss(nsec3_str);
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <util/buffer.h>
#include <util/encode/hex.h>
NSEC3PARAM::NSEC3PARAM(const std::string& nsec3param_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the NSEC3PARAMImpl that constructFromLexer() returns.
- std::auto_ptr<NSEC3PARAMImpl> impl_ptr(NULL);
+ std::unique_ptr<NSEC3PARAMImpl> impl_ptr;
try {
std::istringstream ss(nsec3param_str);
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
OPT::OPT(InputBuffer& buffer, size_t rdata_len) :
impl_(NULL)
{
- std::auto_ptr<OPTImpl> impl_ptr(new OPTImpl);
+ std::unique_ptr<OPTImpl> impl_ptr(new OPTImpl);
while (true) {
if (rdata_len == 0) {
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <string>
#include <iomanip>
#include <iostream>
RRSIG::RRSIG(const std::string& rrsig_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the RRSIGImpl that constructFromLexer() returns.
- std::auto_ptr<RRSIGImpl> impl_ptr(NULL);
+ std::unique_ptr<RRSIGImpl> impl_ptr;
try {
std::istringstream iss(rrsig_str);
-// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
SSHFP::SSHFP(const string& sshfp_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the SSHFPImpl that constructFromLexer() returns.
- std::auto_ptr<SSHFPImpl> impl_ptr(NULL);
+ std::unique_ptr<SSHFPImpl> impl_ptr;
try {
std::istringstream ss(sshfp_str);
///////////////
///////////////
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <string>
#include <sstream>
#include <vector>
///
/// \param tsig_str A string containing the RDATA to be created
TSIG::TSIG(const std::string& tsig_str) : impl_(NULL) {
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the TSIGImpl that constructFromLexer() returns.
- std::auto_ptr<TSIGImpl> impl_ptr(NULL);
+ std::unique_ptr<TSIGImpl> impl_ptr;
try {
std::istringstream ss(tsig_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2014-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2014-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
CAA::CAA(const string& caa_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the CAAImpl that constructFromLexer() returns.
- std::auto_ptr<CAAImpl> impl_ptr(NULL);
+ std::unique_ptr<CAAImpl> impl_ptr;
try {
std::istringstream ss(caa_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <iostream>
#include <string>
#include <sstream>
DNSKEY::DNSKEY(const std::string& dnskey_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the DNSKEYImpl that constructFromLexer() returns.
- std::auto_ptr<DNSKEYImpl> impl_ptr(NULL);
+ std::unique_ptr<DNSKEYImpl> impl_ptr;
try {
std::istringstream ss(dnskey_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <iostream>
#include <iomanip>
#include <string>
NSEC3::NSEC3(const std::string& nsec3_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the NSEC3Impl that constructFromLexer() returns.
- std::auto_ptr<NSEC3Impl> impl_ptr(NULL);
+ std::unique_ptr<NSEC3Impl> impl_ptr;
try {
std::istringstream ss(nsec3_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <util/buffer.h>
#include <util/encode/hex.h>
NSEC3PARAM::NSEC3PARAM(const std::string& nsec3param_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the NSEC3PARAMImpl that constructFromLexer() returns.
- std::auto_ptr<NSEC3PARAMImpl> impl_ptr(NULL);
+ std::unique_ptr<NSEC3PARAMImpl> impl_ptr;
try {
std::istringstream ss(nsec3param_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
OPT::OPT(InputBuffer& buffer, size_t rdata_len) :
impl_(NULL)
{
- std::auto_ptr<OPTImpl> impl_ptr(new OPTImpl);
+ std::unique_ptr<OPTImpl> impl_ptr(new OPTImpl);
while (true) {
if (rdata_len == 0) {
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2010-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2010-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <string>
#include <iomanip>
#include <iostream>
RRSIG::RRSIG(const std::string& rrsig_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the RRSIGImpl that constructFromLexer() returns.
- std::auto_ptr<RRSIGImpl> impl_ptr(NULL);
+ std::unique_ptr<RRSIGImpl> impl_ptr;
try {
std::istringstream iss(rrsig_str);
} // end of namespace "rdata"
} // end of namespace "dns"
} // end of namespace "isc"
-// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
SSHFP::SSHFP(const string& sshfp_str) :
impl_(NULL)
{
- // We use auto_ptr here because if there is an exception in this
+ // We use unique_ptr here because if there is an exception in this
// constructor, the destructor is not called and there could be a
// leak of the SSHFPImpl that constructFromLexer() returns.
- std::auto_ptr<SSHFPImpl> impl_ptr(NULL);
+ std::unique_ptr<SSHFPImpl> impl_ptr;
try {
std::istringstream ss(sshfp_str);
# KEA_CXXFLAGS)
libkea_log_la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_GXX
-libkea_log_la_CXXFLAGS += -Wno-unused-parameter
+libkea_log_la_CXXFLAGS += -Wno-unused-parameter -Wno-deprecated-declarations
endif
libkea_log_la_CPPFLAGS = $(AM_CPPFLAGS) $(LOG4CPLUS_INCLUDES)
libkea_log_la_LIBADD = $(top_builddir)/src/lib/log/interprocess/libkea-log_interprocess.la
-// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
#include <pthread.h>
-using std::auto_ptr;
+using std::unique_ptr;
namespace isc {
namespace util {
isc_throw(isc::InvalidOperation, std::strerror(result));
}
- auto_ptr<Impl> impl(new Impl);
+ unique_ptr<Impl> impl(new Impl);
result = pthread_mutex_init(&impl->mutex, &attributes);
switch (result) {
case 0: // All 0K
-// Copyright (C) 2012-2015 Internet Systems Consortium, Inc. ("ISC")
+// Copyright (C) 2012-2016 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
/// is destroyed.
///
/// If you create the locker on the stack or using some other "garbage
- /// collecting" mechanism (auto_ptr, for example), it ensures exception
+ /// collecting" mechanism (unique_ptr, for example), it ensures exception
/// safety with regards to the mutex - it'll get released on the exit
/// of function no matter by what means.
class Locker : boost::noncopyable {
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#include <config.h>
+
#include <util/threads/thread.h>
#include <util/threads/sync.h>
using std::string;
using std::exception;
-using std::auto_ptr;
+using std::unique_ptr;
using boost::scoped_ptr;
namespace isc {
Thread::Thread(const boost::function<void ()>& main) :
impl_(NULL)
{
- auto_ptr<Impl> impl(new Impl(main));
+ unique_ptr<Impl> impl(new Impl(main));
Blocker blocker;
const int result = pthread_create(&impl->tid_, NULL, &Impl::run,
impl.get());