diff DEPENDENCIES/generic/include/boost/flyweight/set_factory.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/set_factory.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,82 @@
+/* Copyright 2006-2009 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_SET_FACTORY_HPP
+#define BOOST_FLYWEIGHT_SET_FACTORY_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/detail/allocator_utilities.hpp>
+#include <boost/flyweight/assoc_container_factory.hpp>
+#include <boost/flyweight/factory_tag.hpp>
+#include <boost/flyweight/set_factory_fwd.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/mpl/if.hpp>
+#include <set>
+
+/* Particularization of assoc_container_factory_class using a set.
+ */
+
+namespace boost{
+
+namespace flyweights{
+
+template<
+  typename Entry,typename Key,
+  typename Compare,typename Allocator
+>
+class set_factory_class:
+  public assoc_container_factory_class<
+    std::set<
+      Entry,
+      typename boost::mpl::if_<
+        mpl::is_na<Compare>,
+        std::less<Key>,
+        Compare
+      >::type,
+      typename boost::mpl::if_<
+        mpl::is_na<Allocator>,
+        std::allocator<Entry>,
+        Allocator
+      >::type
+    >
+  >
+{
+public:
+  typedef set_factory_class type;
+  BOOST_MPL_AUX_LAMBDA_SUPPORT(
+    4,set_factory_class,(Entry,Key,Compare,Allocator))
+};
+
+/* set_factory_class specifier */
+
+template<
+  typename Compare,typename Allocator
+  BOOST_FLYWEIGHT_NOT_A_PLACEHOLDER_EXPRESSION_DEF
+>
+struct set_factory:factory_marker
+{
+  template<typename Entry,typename Key>
+  struct apply:
+    mpl::apply2<
+      set_factory_class<
+        boost::mpl::_1,boost::mpl::_2,Compare,Allocator
+      >,
+      Entry,Key
+    >
+  {};
+};
+
+} /* namespace flyweights */
+
+} /* namespace boost */
+
+#endif