| 1 | #include <boost/interprocess/managed_shared_memory.hpp>
|
|---|
| 2 | #include <boost/multi_index_container.hpp>
|
|---|
| 3 | #include <boost/multi_index/composite_key.hpp>
|
|---|
| 4 | #include <boost/multi_index/hashed_index.hpp>
|
|---|
| 5 | #include <boost/multi_index/sequenced_index.hpp>
|
|---|
| 6 | #include <boost/multi_index/member.hpp>
|
|---|
| 7 |
|
|---|
| 8 | using namespace boost::multi_index;
|
|---|
| 9 | using namespace boost::interprocess;
|
|---|
| 10 |
|
|---|
| 11 | typedef struct element {
|
|---|
| 12 | int a;
|
|---|
| 13 | int b;
|
|---|
| 14 | int c;
|
|---|
| 15 | int d;
|
|---|
| 16 | } element_t;
|
|---|
| 17 |
|
|---|
| 18 | struct myIndex :
|
|---|
| 19 | indexed_by<
|
|---|
| 20 | hashed_unique<
|
|---|
| 21 | composite_key<element,
|
|---|
| 22 | member<element, int, &element::a>,
|
|---|
| 23 | member<element, int, &element::b>,
|
|---|
| 24 | member<element, int, &element::c> > >,
|
|---|
| 25 | ordered_non_unique<
|
|---|
| 26 | composite_key<element,
|
|---|
| 27 | member<element, int, &element::b>,
|
|---|
| 28 | member<element, int, &element::c> > >
|
|---|
| 29 | > {};
|
|---|
| 30 |
|
|---|
| 31 | typedef multi_index_container<element,
|
|---|
| 32 | myIndex,
|
|---|
| 33 | allocator<element, managed_shared_memory::segment_manager>
|
|---|
| 34 | > myMap;
|
|---|
| 35 |
|
|---|
| 36 | int main(int argc, char **argv)
|
|---|
| 37 | {
|
|---|
| 38 | element elem;
|
|---|
| 39 | managed_shared_memory* segment;
|
|---|
| 40 | segment = new managed_shared_memory(open_or_create, "test", 4096);
|
|---|
| 41 | myMap *testMap = segment->find_or_construct<myMap>("test")(myMap::ctor_args_list(), segment->get_segment_manager());
|
|---|
| 42 | testMap->insert(elem);
|
|---|
| 43 | return 0;
|
|---|
| 44 | }
|
|---|