diff options
author | Anas Nashif <anas.nashif@intel.com> | 2013-08-26 08:15:55 -0400 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2013-08-26 08:15:55 -0400 |
commit | bb4dd8289b351fae6b55e303f189127a394a1edd (patch) | |
tree | 77c9c35a31b1459dd7988c2448e797d142530c41 /tools/quickbook/src/files.hpp | |
parent | 1a78a62555be32868418fe52f8e330c9d0f95d5a (diff) | |
download | boost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.gz boost-bb4dd8289b351fae6b55e303f189127a394a1edd.tar.bz2 boost-bb4dd8289b351fae6b55e303f189127a394a1edd.zip |
Imported Upstream version 1.51.0upstream/1.51.0
Diffstat (limited to 'tools/quickbook/src/files.hpp')
-rw-r--r-- | tools/quickbook/src/files.hpp | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tools/quickbook/src/files.hpp b/tools/quickbook/src/files.hpp index 1b0ef282b0..4f217e70cd 100644 --- a/tools/quickbook/src/files.hpp +++ b/tools/quickbook/src/files.hpp @@ -12,11 +12,10 @@ #define BOOST_QUICKBOOK_FILES_HPP #include <string> -#include <boost/filesystem/v3/path.hpp> +#include <boost/filesystem/path.hpp> #include <boost/intrusive_ptr.hpp> #include <stdexcept> #include <cassert> -#include "intrusive_base.hpp" namespace quickbook { @@ -34,20 +33,35 @@ namespace quickbook { int column; }; - struct file : intrusive_base<file> + struct file { + private: + // Non copyable + file& operator=(file const&); + file(file const&); + public: fs::path const path; std::string source; + bool is_code_snippets; private: unsigned qbk_version; + unsigned ref_count; public: file(fs::path const& path, std::string const& source, unsigned qbk_version) : - path(path), source(source), qbk_version(qbk_version) + path(path), source(source), is_code_snippets(false), + qbk_version(qbk_version), ref_count(0) {} - virtual ~file() {} + file(file const& f, std::string const& source) : + path(f.path), source(source), is_code_snippets(f.is_code_snippets), + qbk_version(f.qbk_version), ref_count(0) + {} + + virtual ~file() { + assert(!ref_count); + } unsigned version() const { assert(qbk_version); @@ -63,6 +77,11 @@ namespace quickbook { } virtual file_position position_of(std::string::const_iterator) const; + + friend void intrusive_ptr_add_ref(file* ptr) { ++ptr->ref_count; } + + friend void intrusive_ptr_release(file* ptr) + { if(--ptr->ref_count == 0) delete ptr; } }; // If version isn't supplied then it must be set later. |