/Src/Dependencies/Boost/libs/property_map/test/property_map_cc.cpp
http://hadesmem.googlecode.com/ · C++ · 116 lines · 105 code · 3 blank · 8 comment · 0 complexity · eaba6857c90c258a6cdf047c6d2c95de MD5 · raw file
- // (C) Copyright Jeremy Siek 2001.
- // 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)
- #include <boost/property_map/property_map.hpp>
- #include <boost/property_map/shared_array_property_map.hpp>
- #include <map>
- // This file checks the property map concepts against the property map
- // archetypes to make sure they are consistent and that they compile.
- // This also checks all the property map classes defined in
- // property_map.hpp against the concept checking classes.
- int
- main()
- {
- using namespace boost;
- {
- typedef null_archetype<> Key;
- typedef assignable_archetype<copy_constructible_archetype<> > Value;
- typedef readable_property_map_archetype<Key, Value> PMap;
- function_requires<ReadablePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef null_archetype<> Key;
- typedef assignable_archetype<copy_constructible_archetype<> > Value;
- typedef writable_property_map_archetype<Key, Value> PMap;
- function_requires<WritablePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef null_archetype<> Key;
- typedef assignable_archetype<copy_constructible_archetype<> > Value;
- typedef read_write_property_map_archetype<Key, Value> PMap;
- function_requires<ReadWritePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef null_archetype<> Key;
- typedef assignable_archetype<copy_constructible_archetype<> > Value;
- typedef lvalue_property_map_archetype<Key, Value> PMap;
- function_requires<LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef null_archetype<> Key;
- typedef assignable_archetype<copy_constructible_archetype<> > Value;
- typedef mutable_lvalue_property_map_archetype<Key, Value> PMap;
- function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef std::ptrdiff_t Key;
- typedef int* PMap;
- function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef std::ptrdiff_t Key;
- typedef const int* PMap;
- function_requires<LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef sgi_assignable_archetype<> Key; // ?
- typedef sgi_assignable_archetype<> Value;
- typedef random_access_iterator_archetype<Value> Iterator;
- typedef readable_property_map_archetype<Key, std::ptrdiff_t> IndexMap;
- typedef iterator_property_map<Iterator, IndexMap
- #ifdef BOOST_NO_STD_ITERATOR_TRAITS
- , Value, const Value&
- #endif
- > PMap;
- function_requires<LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef sgi_assignable_archetype<> Key;
- typedef sgi_assignable_archetype<> Value;
- typedef mutable_random_access_iterator_archetype<Value> Iterator;
- typedef readable_property_map_archetype<Key, std::ptrdiff_t> IndexMap;
- typedef iterator_property_map<Iterator, IndexMap
- #ifdef BOOST_NO_STD_ITERATOR_TRAITS
- , Value, Value&
- #endif
- > PMap;
- function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef sgi_assignable_archetype< less_than_comparable_archetype<> > Key;
- typedef default_constructible_archetype< sgi_assignable_archetype<> >
- Value;
- typedef std::map<Key, Value> Container;
- typedef associative_property_map<Container> PMap;
- function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef sgi_assignable_archetype< less_than_comparable_archetype<> > Key;
- typedef default_constructible_archetype< sgi_assignable_archetype<> >
- Value;
- typedef std::map<Key, Value> Container;
- typedef const_associative_property_map<Container> PMap;
- function_requires<LvaluePropertyMapConcept<PMap, Key> >();
- }
- {
- typedef identity_property_map PMap;
- function_requires<ReadablePropertyMapConcept<PMap, int> >();
- }
- {
- typedef dummy_property_map PMap;
- function_requires<ReadWritePropertyMapConcept<PMap, int> >();
- }
- {
- typedef sgi_assignable_archetype<> Key; // ?
- typedef sgi_assignable_archetype<> Value;
- typedef random_access_iterator_archetype<Value> Iterator;
- typedef readable_property_map_archetype<Key, std::ptrdiff_t> IndexMap;
- typedef shared_array_property_map<Value, IndexMap> PMap;
- function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >();
- }
- return 0;
- }