diff DEPENDENCIES/generic/include/boost/flyweight/intermodule_holder.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/flyweight/intermodule_holder.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,54 @@
+/* Copyright 2006-2011 Joaquin M Lopez Munoz.
+ * 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)
+ *
+ * See http://www.boost.org/libs/flyweight for library home page.
+ */
+
+#ifndef BOOST_FLYWEIGHT_INTERMODULE_HOLDER_HPP
+#define BOOST_FLYWEIGHT_INTERMODULE_HOLDER_HPP
+
+#if defined(_MSC_VER)&&(_MSC_VER>=1200)
+#pragma once
+#endif
+
+#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
+#include <boost/flyweight/holder_tag.hpp>
+#include <boost/flyweight/intermodule_holder_fwd.hpp>
+#include <boost/interprocess/detail/intermodule_singleton.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+/* intermodule_holder_class guarantees a unique instance across all dynamic
+ * modules of a program.
+ */
+
+namespace boost{
+
+namespace flyweights{
+
+template<typename C>
+struct intermodule_holder_class:
+  interprocess::ipcdetail::intermodule_singleton<C,true>,
+  holder_marker
+{
+  typedef intermodule_holder_class type;
+  BOOST_MPL_AUX_LAMBDA_SUPPORT(1,intermodule_holder_class,(C))
+};
+
+/* intermodule_holder_class specifier */
+
+struct intermodule_holder:holder_marker
+{
+  template<typename C>
+  struct apply
+  {
+    typedef intermodule_holder_class<C> type;
+  };
+};
+
+} /* namespace flyweights */
+
+} /* namespace boost */
+
+#endif