/usr/include/soci/procedure.h is in libsoci-dev 3.2.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | //
// Copyright (C) 2004-2008 Maciej Sobczak, Stephen Hutton
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
#ifndef SOCI_PROCEDURE_H_INCLUDED
#define SOCI_PROCEDURE_H_INCLUDED
#include "statement.h"
namespace soci
{
namespace details
{
class SOCI_DECL procedure_impl : public statement_impl
{
public:
procedure_impl(session & s) : statement_impl(s), refCount_(1) {}
procedure_impl(prepare_temp_type const & prep);
void inc_ref() { ++refCount_; }
void dec_ref()
{
if (--refCount_ == 0)
{
delete this;
}
}
private:
int refCount_;
};
} // namespace details
class SOCI_DECL procedure
{
public:
// this is a conversion constructor
procedure(details::prepare_temp_type const & prep)
: impl_(new details::procedure_impl(prep)) {}
~procedure() { impl_->dec_ref(); }
// copy is supported here
procedure(procedure const & other)
: impl_(other.impl_)
{
impl_->inc_ref();
}
void operator=(procedure const & other)
{
other.impl_->inc_ref();
impl_->dec_ref();
impl_ = other.impl_;
}
// forwarders to procedure_impl
// (or rather to its base interface from statement_impl)
bool execute(bool withDataExchange = false)
{
gotData_ = impl_->execute(withDataExchange);
return gotData_;
}
bool fetch()
{
gotData_ = impl_->fetch();
return gotData_;
}
bool got_data() const
{
return gotData_;
}
private:
details::procedure_impl * impl_;
bool gotData_;
};
} // namespace soci
#endif
|