Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41370]
46
doc/Jamfile.v2
Normal file
@@ -0,0 +1,46 @@
|
||||
# Boost.Interprocess library documentation Jamfile ---------------------------------
|
||||
#
|
||||
# Copyright Ion Gaztañaga 2005-2007. Use, modification and
|
||||
# distribution is subject to 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 for updates, documentation, and revision history.
|
||||
|
||||
import doxygen ;
|
||||
import quickbook ;
|
||||
|
||||
doxygen autodoc
|
||||
:
|
||||
[ glob ../../../boost/interprocess/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/allocators/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/containers/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/indexes/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/ipc/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/mem_algo/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/smart_ptr/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/streams/*.hpp ]
|
||||
[ glob ../../../boost/interprocess/sync/*.hpp ]
|
||||
:
|
||||
<doxygen:param>EXTRACT_ALL=NO
|
||||
<doxygen:param>HIDE_UNDOC_MEMBERS=YES
|
||||
<doxygen:param>EXTRACT_PRIVATE=NO
|
||||
<doxygen:param>EXPAND_ONLY_PREDEF=YES
|
||||
<xsl:param>"boost.doxygen.reftitle=Boost.Interprocess Reference"
|
||||
<xsl:param>"boost.doxygen.refid=reference"
|
||||
;
|
||||
|
||||
xml interprocess : interprocess.qbk ;
|
||||
|
||||
boostbook standalone
|
||||
:
|
||||
interprocess
|
||||
:
|
||||
<xsl:param>boost.root=../../../..
|
||||
<xsl:param>boost.libraries=../../../../libs/libraries.htm
|
||||
<xsl:param>toc.max.depth=1
|
||||
<xsl:param>toc.section.depth=2
|
||||
<xsl:param>chunk.first.sections=1
|
||||
<xsl:param>chunk.section.depth=2
|
||||
<dependency>autodoc
|
||||
;
|
||||
538
doc/html/boostbook.css
Normal file
@@ -0,0 +1,538 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2004 Joel de Guzman
|
||||
http://spirit.sourceforge.net/
|
||||
|
||||
Use, modification and distribution is subject to 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)
|
||||
=============================================================================*/
|
||||
|
||||
/*=============================================================================
|
||||
Body defaults
|
||||
=============================================================================*/
|
||||
|
||||
body
|
||||
{
|
||||
margin: 1em;
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Paragraphs
|
||||
=============================================================================*/
|
||||
|
||||
p
|
||||
{
|
||||
text-align: left;
|
||||
font-size: 10pt;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Program listings
|
||||
=============================================================================*/
|
||||
|
||||
/* Code on paragraphs */
|
||||
p tt.computeroutput
|
||||
{
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
pre.synopsis
|
||||
{
|
||||
font-size: 10pt;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
font-size: 10pt;
|
||||
display: block;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Headings
|
||||
=============================================================================*/
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
text-align: left;
|
||||
margin: 1em 0em 0.5em 0em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 { font: 140% }
|
||||
h2 { font: bold 140% }
|
||||
h3 { font: bold 130% }
|
||||
h4 { font: bold 120% }
|
||||
h5 { font: italic 110% }
|
||||
h6 { font: italic 100% }
|
||||
|
||||
/* Top page titles */
|
||||
title,
|
||||
h1.title,
|
||||
h2.title
|
||||
h3.title,
|
||||
h4.title,
|
||||
h5.title,
|
||||
h6.title,
|
||||
.refentrytitle
|
||||
{
|
||||
font-weight: bold;
|
||||
margin-bottom: 1pc;
|
||||
}
|
||||
|
||||
h1.title { font-size: 140% }
|
||||
h2.title { font-size: 140% }
|
||||
h3.title { font-size: 130% }
|
||||
h4.title { font-size: 120% }
|
||||
h5.title { font-size: 110% }
|
||||
h6.title { font-size: 100% }
|
||||
|
||||
.section h1
|
||||
{
|
||||
margin: 0em 0em 0.5em 0em;
|
||||
font-size: 140%;
|
||||
}
|
||||
|
||||
.section h2 { font-size: 140% }
|
||||
.section h3 { font-size: 130% }
|
||||
.section h4 { font-size: 120% }
|
||||
.section h5 { font-size: 110% }
|
||||
.section h6 { font-size: 100% }
|
||||
|
||||
/* Code on titles */
|
||||
h1 tt.computeroutput { font-size: 140% }
|
||||
h2 tt.computeroutput { font-size: 140% }
|
||||
h3 tt.computeroutput { font-size: 130% }
|
||||
h4 tt.computeroutput { font-size: 120% }
|
||||
h5 tt.computeroutput { font-size: 110% }
|
||||
h6 tt.computeroutput { font-size: 100% }
|
||||
|
||||
/*=============================================================================
|
||||
Author
|
||||
=============================================================================*/
|
||||
|
||||
h3.author
|
||||
{
|
||||
font-size: 100%
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Lists
|
||||
=============================================================================*/
|
||||
|
||||
li
|
||||
{
|
||||
font-size: 10pt;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
/* Unordered lists */
|
||||
ul
|
||||
{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* Ordered lists */
|
||||
ol
|
||||
{
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Links
|
||||
=============================================================================*/
|
||||
|
||||
a
|
||||
{
|
||||
text-decoration: none; /* no underline */
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Spirit style navigation
|
||||
=============================================================================*/
|
||||
|
||||
.spirit-nav
|
||||
{
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.spirit-nav a
|
||||
{
|
||||
color: white;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.spirit-nav img
|
||||
{
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Table of contents
|
||||
=============================================================================*/
|
||||
|
||||
.toc
|
||||
{
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.1pc 1pc 0.1pc 1pc;
|
||||
font-size: 10pt;
|
||||
line-height: 1.15;
|
||||
}
|
||||
|
||||
.toc-main
|
||||
{
|
||||
width: 600;
|
||||
text-align: center;
|
||||
margin: 1pc 1pc 1pc 10%;
|
||||
padding: 2pc 1pc 3pc 1pc;
|
||||
line-height: 0.1;
|
||||
}
|
||||
|
||||
.boost-toc
|
||||
{
|
||||
float: right;
|
||||
padding: 0.5pc;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Tables
|
||||
=============================================================================*/
|
||||
|
||||
.table-title,
|
||||
div.table p.title
|
||||
{
|
||||
margin-left: 4%;
|
||||
padding-right: 0.5em;
|
||||
padding-left: 0.5em;
|
||||
}
|
||||
|
||||
.informaltable table,
|
||||
.table table
|
||||
{
|
||||
width: 92%;
|
||||
margin-left: 4%;
|
||||
margin-right: 4%;
|
||||
}
|
||||
|
||||
div.informaltable table,
|
||||
div.table table
|
||||
{
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/* Table Cells */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
padding: 0.5em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
padding: 0.5em 0.5em 0.5em 0.5em;
|
||||
border: 1pt solid white;
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Blurbs
|
||||
=============================================================================*/
|
||||
|
||||
div.note,
|
||||
div.tip,
|
||||
div.important,
|
||||
div.caution,
|
||||
div.warning,
|
||||
p.blurb
|
||||
{
|
||||
font-size: 10pt;
|
||||
line-height: 1.2;
|
||||
display: block;
|
||||
margin: 1pc 4% 0pc 4%;
|
||||
padding: 0.5pc 0.5pc 0.5pc 0.5pc;
|
||||
}
|
||||
|
||||
p.blurb img
|
||||
{
|
||||
padding: 1pt;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Variable Lists
|
||||
=============================================================================*/
|
||||
|
||||
span.term
|
||||
{
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.variablelist table tbody tr td
|
||||
{
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
padding: 0em 2em 0em 0em;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.variablelist table tbody tr td p
|
||||
{
|
||||
margin: 0em 0em 0.5em 0em;
|
||||
}
|
||||
|
||||
/* Make the terms in definition lists bold */
|
||||
div.variablelist dl dt
|
||||
{
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
div.variablelist dl dd
|
||||
{
|
||||
margin: 1em 0em 1em 2em;
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Misc
|
||||
=============================================================================*/
|
||||
|
||||
/* Title of books and articles in bibliographies */
|
||||
span.title
|
||||
{
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
span.underline
|
||||
{
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
span.strikethrough
|
||||
{
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* Copyright, Legal Notice */
|
||||
div div.legalnotice p
|
||||
{
|
||||
font-size: 8pt;
|
||||
text-align: left
|
||||
}
|
||||
|
||||
/*=============================================================================
|
||||
Colors
|
||||
=============================================================================*/
|
||||
|
||||
@media screen
|
||||
{
|
||||
/* Links */
|
||||
a
|
||||
{
|
||||
color: #0C7445;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
color: #663974;
|
||||
}
|
||||
|
||||
h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
|
||||
h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
|
||||
h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
|
||||
{
|
||||
text-decoration: none; /* no underline */
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
/* Syntax Highlighting */
|
||||
.keyword { color: #0000AA; }
|
||||
.identifier { color: #000000; }
|
||||
.special { color: #707070; }
|
||||
.preprocessor { color: #402080; }
|
||||
.char { color: teal; }
|
||||
.comment { color: #800000; }
|
||||
.string { color: teal; }
|
||||
.number { color: teal; }
|
||||
.white_bkd { background-color: #E8FBE9; }
|
||||
.dk_grey_bkd { background-color: #A0DAAC; }
|
||||
|
||||
/* Copyright, Legal Notice */
|
||||
.copyright
|
||||
{
|
||||
color: #666666;
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
div div.legalnotice p
|
||||
{
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
/* Program listing */
|
||||
pre.synopsis
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Blurbs */
|
||||
div.note,
|
||||
div.tip,
|
||||
div.important,
|
||||
div.caution,
|
||||
div.warning,
|
||||
p.blurb
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
.toc
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
.toc-main
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
|
||||
/* Tables */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
background-color: #E3F9E4;
|
||||
border: 1px solid #DCDCDC;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
span.highlight
|
||||
{
|
||||
color: #00A000;
|
||||
}
|
||||
}
|
||||
|
||||
@media print
|
||||
{
|
||||
/* Links */
|
||||
a
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:visited
|
||||
{
|
||||
color: black;
|
||||
}
|
||||
|
||||
.spirit-nav
|
||||
{
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Program listing */
|
||||
pre.synopsis
|
||||
{
|
||||
border: 1px solid gray;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
.programlisting,
|
||||
.screen
|
||||
{
|
||||
border: 1px solid gray;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
.toc
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Table of contents */
|
||||
.toc-main
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
.informaltable table,
|
||||
.table table
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
border-bottom: 3px solid #9D9D9D;
|
||||
border-right: 3px solid #9D9D9D;
|
||||
border-collapse: collapse;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
div.informaltable table tr td,
|
||||
div.table table tr td
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
div.informaltable table tr th,
|
||||
div.table table tr th
|
||||
{
|
||||
border: 1px solid #DCDCDC;
|
||||
background-color: #FAFFFB;
|
||||
}
|
||||
|
||||
/* Misc */
|
||||
span.highlight
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
BIN
doc/html/images/blank.png
Normal file
|
After Width: | Height: | Size: 374 B |
BIN
doc/html/images/caution.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
doc/html/images/draft.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
doc/html/images/home.png
Normal file
|
After Width: | Height: | Size: 358 B |
BIN
doc/html/images/important.png
Normal file
|
After Width: | Height: | Size: 722 B |
BIN
doc/html/images/next.png
Normal file
|
After Width: | Height: | Size: 336 B |
BIN
doc/html/images/note.png
Normal file
|
After Width: | Height: | Size: 490 B |
BIN
doc/html/images/prev.png
Normal file
|
After Width: | Height: | Size: 334 B |
BIN
doc/html/images/tip.png
Normal file
|
After Width: | Height: | Size: 449 B |
BIN
doc/html/images/toc-blank.png
Normal file
|
After Width: | Height: | Size: 318 B |
BIN
doc/html/images/toc-minus.png
Normal file
|
After Width: | Height: | Size: 259 B |
BIN
doc/html/images/toc-plus.png
Normal file
|
After Width: | Height: | Size: 264 B |
BIN
doc/html/images/up.png
Normal file
|
After Width: | Height: | Size: 370 B |
BIN
doc/html/images/warning.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
5
doc/html/reference.css
Normal file
@@ -0,0 +1,5 @@
|
||||
PRE.synopsis {
|
||||
background-color: #e0ffff;
|
||||
border: thin solid blue;
|
||||
padding: 1em
|
||||
}
|
||||
6675
doc/interprocess.qbk
Normal file
35
example/Jamfile.v2
Normal file
@@ -0,0 +1,35 @@
|
||||
# Boost Interprocess Library Example Jamfile
|
||||
|
||||
# (C) Copyright Ion Gaztañaga 2006.
|
||||
# Use, modification and distribution are subject to 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)
|
||||
|
||||
# Adapted from John Maddock's TR1 Jamfile.v2
|
||||
# Copyright John Maddock 2005.
|
||||
# Use, modification and distribution are subject to 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)
|
||||
|
||||
# this rule enumerates through all the sources and invokes
|
||||
# the run rule for each source, the result is a list of all
|
||||
# the run rules, which we can pass on to the test_suite rule:
|
||||
|
||||
rule test_all
|
||||
{
|
||||
local all_rules = ;
|
||||
|
||||
for local fileb in [ glob *.cpp ]
|
||||
{
|
||||
all_rules += [ link $(fileb) /boost/thread//boost_thread
|
||||
# all_rules += [ compile $(fileb)
|
||||
: # additional args
|
||||
: # test-files
|
||||
: # requirements
|
||||
] ;
|
||||
}
|
||||
|
||||
return $(all_rules) ;
|
||||
}
|
||||
|
||||
test-suite interprocess_example : [ test_all r ] : <threading>multi ;
|
||||
64
example/doc_adaptive_pool.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_adaptive_pool
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/adaptive_pool.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a adaptive_pool that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef adaptive_pool<int, managed_shared_memory::segment_manager>
|
||||
adaptive_pool_t;
|
||||
adaptive_pool_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//Create another adaptive_pool. Since the segment manager address
|
||||
//is the same, this adaptive_pool will be
|
||||
//attached to the same pool so "allocator_instance2" can deallocate
|
||||
//nodes allocated by "allocator_instance"
|
||||
adaptive_pool_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//Create another adaptive_pool using copy-constructor. This
|
||||
//adaptive_pool will also be attached to the same pool
|
||||
adaptive_pool_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//All allocators are equal
|
||||
assert(allocator_instance == allocator_instance2);
|
||||
assert(allocator_instance2 == allocator_instance3);
|
||||
|
||||
//So memory allocated with one can be deallocated with another
|
||||
allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
|
||||
allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
|
||||
|
||||
//The common pool will be destroyed here, since no allocator is
|
||||
//attached to the pool
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
43
example/doc_allocator.cpp
Normal file
@@ -0,0 +1,43 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_allocator
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create an allocator that allocates ints from the managed segment
|
||||
allocator<int, managed_shared_memory::segment_manager>
|
||||
allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//Copy constructed allocator is equal
|
||||
allocator<int, managed_shared_memory::segment_manager>
|
||||
allocator_instance2(allocator_instance);
|
||||
assert(allocator_instance2 == allocator_instance);
|
||||
|
||||
//Allocate and deallocate memory for 100 ints
|
||||
allocator_instance2.deallocate(allocator_instance.allocate(100), 100);
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
79
example/doc_anonymous_conditionA.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_conditionA
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#include "doc_anonymous_condition_shared_data.hpp"
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(create_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
try{
|
||||
//Set size
|
||||
shm.truncate(sizeof(trace_queue));
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
trace_queue * data = new (addr) trace_queue;
|
||||
|
||||
const int NumMsg = 100;
|
||||
|
||||
for(int i = 0; i < NumMsg; ++i){
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
if(data->message_in){
|
||||
data->cond_full.wait(lock);
|
||||
}
|
||||
if(i == (NumMsg-1))
|
||||
std::sprintf(data->items, "%s", "last message");
|
||||
else
|
||||
std::sprintf(data->items, "%s_%d", "my_trace", i);
|
||||
|
||||
//Notify to the other process that there is a message
|
||||
data->cond_empty.notify_one();
|
||||
|
||||
//Mark message buffer as full
|
||||
data->message_in = true;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
74
example/doc_anonymous_conditionB.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_conditionB
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
#include "doc_anonymous_condition_shared_data.hpp"
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(open_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
try{
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Obtain a pointer to the shared structure
|
||||
trace_queue * data = static_cast<trace_queue*>(addr);
|
||||
|
||||
//Print messages until the other process marks the end
|
||||
bool end_loop = false;
|
||||
do{
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
if(!data->message_in){
|
||||
data->cond_empty.wait(lock);
|
||||
}
|
||||
if(std::strcmp(data->items, "last message") == 0){
|
||||
end_loop = true;
|
||||
}
|
||||
else{
|
||||
//Print the message
|
||||
std::cout << data->items << std::endl;
|
||||
//Notify the other process that the buffer is empty
|
||||
data->message_in = false;
|
||||
data->cond_full.notify_one();
|
||||
}
|
||||
}
|
||||
while(!end_loop);
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
39
example/doc_anonymous_condition_shared_data.hpp
Normal file
@@ -0,0 +1,39 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_condition_shared_data
|
||||
#include <boost/interprocess/sync/interprocess_mutex.hpp>
|
||||
#include <boost/interprocess/sync/interprocess_condition.hpp>
|
||||
|
||||
struct trace_queue
|
||||
{
|
||||
enum { LineSize = 100 };
|
||||
|
||||
trace_queue()
|
||||
: message_in(false)
|
||||
{}
|
||||
|
||||
//Mutex to protect access to the queue
|
||||
boost::interprocess::interprocess_mutex mutex;
|
||||
|
||||
//Condition to wait when the queue is empty
|
||||
boost::interprocess::interprocess_condition cond_empty;
|
||||
|
||||
//Condition to wait when the queue is full
|
||||
boost::interprocess::interprocess_condition cond_full;
|
||||
|
||||
//Items to fill
|
||||
char items[LineSize];
|
||||
|
||||
//Is there any message
|
||||
bool message_in;
|
||||
};
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
77
example/doc_anonymous_mutexA.cpp
Normal file
@@ -0,0 +1,77 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_mutexA
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include "doc_anonymous_mutex_shared_data.hpp"
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(create_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Set size
|
||||
shm.truncate(sizeof(shared_memory_log));
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
shared_memory_log * data = new (addr) shared_memory_log;
|
||||
|
||||
//Write some logs
|
||||
for(int i = 0; i < shared_memory_log::NumItems; ++i){
|
||||
//Lock the mutex
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
std::sprintf(data->items[(data->current_line++) % shared_memory_log::NumItems]
|
||||
,"%s_%d", "process_a", i);
|
||||
if(i == (shared_memory_log::NumItems-1))
|
||||
data->end_a = true;
|
||||
//Mutex is released here
|
||||
}
|
||||
|
||||
//Wait until the other process ends
|
||||
while(1){
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
if(data->end_b)
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
70
example/doc_anonymous_mutexB.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_mutexB
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include "doc_anonymous_mutex_shared_data.hpp"
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Open the shared memory object.
|
||||
shared_memory_object shm
|
||||
(open_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
shared_memory_log * data = static_cast<shared_memory_log*>(addr);
|
||||
|
||||
//Write some logs
|
||||
for(int i = 0; i < 100; ++i){
|
||||
//Lock the mutex
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
std::sprintf(data->items[(data->current_line++) % shared_memory_log::NumItems]
|
||||
,"%s_%d", "process_a", i);
|
||||
if(i == (shared_memory_log::NumItems-1))
|
||||
data->end_b = true;
|
||||
//Mutex is released here
|
||||
}
|
||||
|
||||
//Wait until the other process ends
|
||||
while(1){
|
||||
scoped_lock<interprocess_mutex> lock(data->mutex);
|
||||
if(data->end_a)
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
35
example/doc_anonymous_mutex_shared_data.hpp
Normal file
@@ -0,0 +1,35 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_mutex_shared_data
|
||||
#include <boost/interprocess/sync/interprocess_mutex.hpp>
|
||||
|
||||
struct shared_memory_log
|
||||
{
|
||||
enum { NumItems = 100 };
|
||||
enum { LineSize = 100 };
|
||||
|
||||
shared_memory_log()
|
||||
: current_line(0)
|
||||
, end_a(false)
|
||||
, end_b(false)
|
||||
{}
|
||||
|
||||
//Mutex to protect access to the queue
|
||||
boost::interprocess::interprocess_mutex mutex;
|
||||
|
||||
//Items to fill
|
||||
char items[NumItems][LineSize];
|
||||
int current_line;
|
||||
bool end_a;
|
||||
bool end_b;
|
||||
};
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
70
example/doc_anonymous_semaphoreA.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_semaphoreA
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include "doc_anonymous_semaphore_shared_data.hpp"
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(create_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Set size
|
||||
shm.truncate(sizeof(shared_memory_buffer));
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
shared_memory_buffer * data = new (addr) shared_memory_buffer;
|
||||
|
||||
const int NumMsg = 100;
|
||||
|
||||
//Insert data in the array
|
||||
for(int i = 0; i < NumMsg; ++i){
|
||||
data->nempty.wait();
|
||||
data->mutex.wait();
|
||||
data->items[i % shared_memory_buffer::NumItems] = i;
|
||||
data->mutex.post();
|
||||
data->nstored.post();
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
66
example/doc_anonymous_semaphoreB.cpp
Normal file
@@ -0,0 +1,66 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_semaphoreB
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include "doc_anonymous_semaphore_shared_data.hpp"
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(open_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Obtain the shared structure
|
||||
shared_memory_buffer * data = static_cast<shared_memory_buffer*>(addr);
|
||||
|
||||
const int NumMsg = 100;
|
||||
|
||||
int extracted_data [NumMsg];
|
||||
|
||||
//Extract the data
|
||||
for(int i = 0; i < NumMsg; ++i){
|
||||
data->nstored.wait();
|
||||
data->mutex.wait();
|
||||
extracted_data[i] = data->items[i % shared_memory_buffer::NumItems];
|
||||
data->mutex.post();
|
||||
data->nempty.post();
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
28
example/doc_anonymous_semaphore_shared_data.hpp
Normal file
@@ -0,0 +1,28 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//[doc_anonymous_semaphore_shared_data
|
||||
#include <boost/interprocess/sync/interprocess_semaphore.hpp>
|
||||
|
||||
struct shared_memory_buffer
|
||||
{
|
||||
enum { NumItems = 10 };
|
||||
|
||||
shared_memory_buffer()
|
||||
: mutex(1), nempty(NumItems), nstored(0)
|
||||
{}
|
||||
|
||||
//Semaphores to protect and synchronize access
|
||||
boost::interprocess::interprocess_semaphore
|
||||
mutex, nempty, nstored;
|
||||
|
||||
//Items to fill
|
||||
int items[NumItems];
|
||||
};
|
||||
//]
|
||||
79
example/doc_anonymous_upgradable_mutexA.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_anonymous_upgradable_mutexA
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include "doc_upgradable_mutex_shared_data.hpp"
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm
|
||||
(create_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Set size
|
||||
shm.truncate(sizeof(shared_data));
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
shared_data * data = new (addr) shared_data;
|
||||
|
||||
//Write some logs
|
||||
for(int i = 0; i < shared_data::NumItems; ++i){
|
||||
//Lock the upgradable_mutex
|
||||
scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
|
||||
std::sprintf(data->items[(data->current_line++) % shared_data::NumItems]
|
||||
,"%s_%d", "process_a", i);
|
||||
if(i == (shared_data::NumItems-1))
|
||||
data->end_a = true;
|
||||
//Mutex is released here
|
||||
}
|
||||
|
||||
//Wait until the other process ends
|
||||
while(1){
|
||||
scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
|
||||
if(data->end_b)
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
72
example/doc_anonymous_upgradable_mutexB.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
|
||||
//[doc_anonymous_upgradable_mutexB
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include "doc_upgradable_mutex_shared_data.hpp"
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Open the shared memory object.
|
||||
shared_memory_object shm
|
||||
(open_only //only create
|
||||
,"shared_memory" //name
|
||||
,read_write //read-write mode
|
||||
);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region
|
||||
(shm //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
|
||||
//Construct the shared structure in memory
|
||||
shared_data * data = static_cast<shared_data*>(addr);
|
||||
|
||||
//Write some logs
|
||||
for(int i = 0; i < 100; ++i){
|
||||
//Lock the upgradable_mutex
|
||||
scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
|
||||
std::sprintf(data->items[(data->current_line++) % shared_data::NumItems]
|
||||
,"%s_%d", "process_a", i);
|
||||
if(i == (shared_data::NumItems-1))
|
||||
data->end_b = true;
|
||||
//Mutex is released here
|
||||
}
|
||||
|
||||
//Wait until the other process ends
|
||||
while(1){
|
||||
scoped_lock<interprocess_upgradable_mutex> lock(data->upgradable_mutex);
|
||||
if(data->end_a)
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
86
example/doc_bufferstream.cpp
Normal file
@@ -0,0 +1,86 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_bufferstream
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/streams/bufferstream.hpp>
|
||||
#include <vector>
|
||||
#include <iterator>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Fill data
|
||||
std::vector<int> data, data2;
|
||||
data.reserve(100);
|
||||
for(int i = 0; i < 100; ++i){
|
||||
data.push_back(i);
|
||||
}
|
||||
|
||||
//Allocate a buffer in shared memory to write data
|
||||
char *my_cstring =
|
||||
segment.construct<char>("MyCString")[100*5](0);
|
||||
bufferstream mybufstream(my_cstring, 100*5);
|
||||
|
||||
//Now write data to the buffer
|
||||
for(int i = 0; i < 100; ++i){
|
||||
mybufstream << data[i] << std::endl;
|
||||
}
|
||||
|
||||
//Check there was no overflow attempt
|
||||
assert(mybufstream.good());
|
||||
|
||||
//Extract all values from the shared memory string
|
||||
//directly to a vector.
|
||||
data2.reserve(100);
|
||||
std::istream_iterator<int> it(mybufstream), itend;
|
||||
std::copy(it, itend, std::back_inserter(data2));
|
||||
|
||||
//This extraction should have ended will fail error since
|
||||
//the numbers formatted in the buffer end before the end
|
||||
//of the buffer. (Otherwise it would trigger eofbit)
|
||||
assert(mybufstream.fail());
|
||||
|
||||
//Compare data
|
||||
assert(std::equal(data.begin(), data.end(), data2.begin()));
|
||||
|
||||
//Clear errors and rewind
|
||||
mybufstream.clear();
|
||||
mybufstream.seekp(0, std::ios::beg);
|
||||
|
||||
//Now write again the data trying to do a buffer overflow
|
||||
for(int i = 0; i < 500; ++i){
|
||||
mybufstream << data[i] << std::endl;
|
||||
}
|
||||
|
||||
//Now make sure badbit is active
|
||||
//which means overflow attempt.
|
||||
assert(!mybufstream.good());
|
||||
assert(mybufstream.bad());
|
||||
segment.destroy_ptr(my_cstring);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
72
example/doc_cached_adaptive_pool.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_cached_adaptive_pool
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/cached_adaptive_pool.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a cached_adaptive_pool that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef cached_adaptive_pool<int, managed_shared_memory::segment_manager>
|
||||
cached_adaptive_pool_t;
|
||||
cached_adaptive_pool_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//The max cached nodes are configurable per instance
|
||||
allocator_instance.set_max_cached_nodes(3);
|
||||
|
||||
//Create another cached_adaptive_pool. Since the segment manager address
|
||||
//is the same, this cached_adaptive_pool will be
|
||||
//attached to the same pool so "allocator_instance2" can deallocate
|
||||
//nodes allocated by "allocator_instance"
|
||||
cached_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//The max cached nodes are configurable per instance
|
||||
allocator_instance2.set_max_cached_nodes(5);
|
||||
|
||||
//Create another cached_adaptive_pool using copy-constructor. This
|
||||
//cached_adaptive_pool will also be attached to the same pool
|
||||
cached_adaptive_pool_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//We can clear the cache
|
||||
allocator_instance3.deallocate_cache();
|
||||
|
||||
//All allocators are equal
|
||||
assert(allocator_instance == allocator_instance2);
|
||||
assert(allocator_instance2 == allocator_instance3);
|
||||
|
||||
//So memory allocated with one can be deallocated with another
|
||||
allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
|
||||
allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
|
||||
|
||||
//The common pool will be destroyed here, since no allocator is
|
||||
//attached to the pool
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
72
example/doc_cached_node_allocator.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_cached_node_allocator
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/cached_node_allocator.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a cached_node_allocator that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef cached_node_allocator<int, managed_shared_memory::segment_manager>
|
||||
cached_node_allocator_t;
|
||||
cached_node_allocator_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//The max cached nodes are configurable per instance
|
||||
allocator_instance.set_max_cached_nodes(3);
|
||||
|
||||
//Create another cached_node_allocator. Since the segment manager address
|
||||
//is the same, this cached_node_allocator will be
|
||||
//attached to the same pool so "allocator_instance2" can deallocate
|
||||
//nodes allocated by "allocator_instance"
|
||||
cached_node_allocator_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//The max cached nodes are configurable per instance
|
||||
allocator_instance2.set_max_cached_nodes(5);
|
||||
|
||||
//Create another cached_node_allocator using copy-constructor. This
|
||||
//cached_node_allocator will also be attached to the same pool
|
||||
cached_node_allocator_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//We can clear the cache
|
||||
allocator_instance3.deallocate_cache();
|
||||
|
||||
//All allocators are equal
|
||||
assert(allocator_instance == allocator_instance2);
|
||||
assert(allocator_instance2 == allocator_instance3);
|
||||
|
||||
//So memory allocated with one can be deallocated with another
|
||||
allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
|
||||
allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
|
||||
|
||||
//The common pool will be destroyed here, since no allocator is
|
||||
//attached to the pool
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
65
example/doc_cont.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_cont
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
//A managed shared memory where we can construct objects
|
||||
//associated with a c-string
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Alias an STL-like allocator of ints that allocates ints from the segment
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
ShmemAllocator;
|
||||
|
||||
//Alias a vector that uses the previous STL-like allocator
|
||||
typedef vector<int, ShmemAllocator> MyVector;
|
||||
|
||||
int initVal[] = {0, 1, 2, 3, 4, 5, 6 };
|
||||
const int *begVal = initVal;
|
||||
const int *endVal = initVal + sizeof(initVal)/sizeof(initVal[0]);
|
||||
|
||||
//Initialize the STL-like allocator
|
||||
const ShmemAllocator alloc_inst (segment.get_segment_manager());
|
||||
|
||||
//Construct the vector in the shared memory segment with the STL-like allocator
|
||||
//from a range of iterators
|
||||
MyVector *myvector =
|
||||
segment.construct<MyVector>
|
||||
("MyVector")/*object name*/
|
||||
(begVal /*first ctor parameter*/,
|
||||
endVal /*second ctor parameter*/,
|
||||
alloc_inst /*third ctor parameter*/);
|
||||
|
||||
//Use vector as your want
|
||||
std::sort(myvector->rbegin(), myvector->rend());
|
||||
// . . .
|
||||
//When done, destroy and delete vector from the segment
|
||||
segment.destroy<MyVector>("MyVector");
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
60
example/doc_contA.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_contA
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Shared memory front-end that is able to construct objects
|
||||
//associated with a c-string. Erase previous shared memory with the name
|
||||
//to be used and create the memory segment at the specified address and initialize resources
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
managed_shared_memory segment
|
||||
(create_only
|
||||
,"MySharedMemory" //segment name
|
||||
,65536); //segment size in bytes
|
||||
|
||||
//Alias an STL compatible allocator of ints that allocates ints from the managed
|
||||
//shared memory segment. This allocator will allow to place containers
|
||||
//in managed shared memory segments
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
ShmemAllocator;
|
||||
|
||||
//Alias a vector that uses the previous STL-like allocator
|
||||
typedef vector<int, ShmemAllocator> MyVector;
|
||||
|
||||
//Initialize shared memory STL-compatible allocator
|
||||
const ShmemAllocator alloc_inst (segment.get_segment_manager());
|
||||
|
||||
//Construct a shared memory
|
||||
MyVector *myvector =
|
||||
segment.construct<MyVector>("MyVector") //object name
|
||||
(alloc_inst);//first ctor parameter
|
||||
|
||||
//Insert data in the vector
|
||||
for(int i = 0; i < 100; ++i){
|
||||
myvector->push_back(i);
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
57
example/doc_contB.cpp
Normal file
@@ -0,0 +1,57 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_contB
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//An special shared memory where we can
|
||||
//construct objects associated with a name.
|
||||
//Connect to the already created shared memory segment
|
||||
//and initialize needed resources
|
||||
managed_shared_memory segment
|
||||
(open_only
|
||||
,"MySharedMemory"); //segment name
|
||||
|
||||
//Alias an STL compatible allocator of ints that allocates ints from the managed
|
||||
//shared memory segment. This allocator will allow to place containers
|
||||
//in managed shared memory segments
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
ShmemAllocator;
|
||||
|
||||
//Alias a vector that uses the previous STL-like allocator
|
||||
typedef vector<int, ShmemAllocator> MyVector;
|
||||
|
||||
//Find the vector using the c-string name
|
||||
MyVector *myvector = segment.find<MyVector>("MyVector").first;
|
||||
|
||||
//Use vector in reverse order
|
||||
std::sort(myvector->rbegin(), myvector->rend());
|
||||
// . . .
|
||||
|
||||
//When done, destroy the vector from the segment
|
||||
segment.destroy<MyVector>("MyVector");
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
63
example/doc_file_mapping.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_file_mapping
|
||||
#include <boost/interprocess/file_mapping.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <cstring>
|
||||
#include <cstddef>
|
||||
#include <cstdio> //std::remove
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Create a file
|
||||
std::filebuf fbuf;
|
||||
fbuf.open("file.bin", std::ios_base::in | std::ios_base::out
|
||||
| std::ios_base::trunc | std::ios_base::binary);
|
||||
|
||||
//Set the size
|
||||
fbuf.pubseekoff(9999, std::ios_base::beg);
|
||||
fbuf.sputc(0);
|
||||
fbuf.close();
|
||||
|
||||
//Create a file mapping.
|
||||
file_mapping m_file("file.bin", read_write);
|
||||
|
||||
//Map the whole file in this process
|
||||
mapped_region region
|
||||
(m_file //What to map
|
||||
,read_write //Map it as read-write
|
||||
);
|
||||
|
||||
if(region.get_size() != 10000)
|
||||
return 1;
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
std::size_t size = region.get_size();
|
||||
|
||||
//Write all the memory to 1
|
||||
std::memset(addr, 1, size);
|
||||
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
std::remove("file.bin");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
std::remove("file.bin");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
74
example/doc_file_mapping2.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_file_mapping2
|
||||
#include <boost/interprocess/file_mapping.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <cstddef>
|
||||
#include <cstdio> //std::remove
|
||||
#include <vector>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Open the file mapping
|
||||
file_mapping m_file ("file.bin", read_only);
|
||||
|
||||
//Map the whole file in this process
|
||||
mapped_region region
|
||||
(m_file //What to map
|
||||
,read_only //Map it as read-only
|
||||
);
|
||||
|
||||
//Get the address of the mapped region
|
||||
void * addr = region.get_address();
|
||||
std::size_t size = region.get_size();
|
||||
|
||||
//Check that memory was initialized to 1
|
||||
const char *mem = static_cast<char*>(addr);
|
||||
for(std::size_t i = 0; i < size; ++i){
|
||||
if(*mem++ != 1){
|
||||
std::cout << "Error checking memory!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Now test it reading the file
|
||||
std::filebuf fbuf;
|
||||
fbuf.open("file.bin", std::ios_base::in | std::ios_base::binary);
|
||||
|
||||
//Read it to memory
|
||||
std::vector<char> vect(region.get_size(), 0);
|
||||
fbuf.sgetn(&vect[0], std::streamsize(vect.size()));
|
||||
|
||||
//Check that memory was initialized to 1
|
||||
mem = static_cast<char*>(&vect[0]);
|
||||
for(std::size_t i = 0; i < size; ++i){
|
||||
if(*mem++ != 1){
|
||||
std::cout << "Error checking memory!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Test successful!" << std::endl;
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
std::remove("file.bin");
|
||||
std::cout << "Unexpected exception: " << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
std::remove("file.bin");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
111
example/doc_intrusive.cpp
Normal file
@@ -0,0 +1,111 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_intrusive
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/smart_ptr/intrusive_ptr.hpp>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
namespace N {
|
||||
|
||||
//A class that has an internal reference count
|
||||
class reference_counted_class
|
||||
{
|
||||
private:
|
||||
//Non-copyable
|
||||
reference_counted_class(const reference_counted_class &);
|
||||
//Non-assignable
|
||||
reference_counted_class & operator=(const reference_counted_class &);
|
||||
//A typedef to save typing
|
||||
typedef managed_shared_memory::segment_manager segment_manager;
|
||||
//This is the reference count
|
||||
unsigned int m_use_count;
|
||||
//The segment manager allows deletion from shared memory segment
|
||||
offset_ptr<segment_manager> mp_segment_manager;
|
||||
|
||||
public:
|
||||
//Constructor
|
||||
reference_counted_class(segment_manager *s_mngr)
|
||||
: m_use_count(0), mp_segment_manager(s_mngr){}
|
||||
//Destructor
|
||||
~reference_counted_class(){}
|
||||
|
||||
public:
|
||||
//Returns the reference count
|
||||
unsigned int use_count() const
|
||||
{ return m_use_count; }
|
||||
|
||||
//Adds a reference
|
||||
inline friend void intrusive_ptr_add_ref(reference_counted_class * p)
|
||||
{ ++p->m_use_count; }
|
||||
|
||||
//Releases a reference
|
||||
inline friend void intrusive_ptr_release(reference_counted_class * p)
|
||||
{ if(--p->m_use_count == 0) p->mp_segment_manager->destroy_ptr(p); }
|
||||
};
|
||||
|
||||
} //namespace N {
|
||||
|
||||
//A class that has an intrusive pointer to reference_counted_class
|
||||
class intrusive_ptr_owner
|
||||
{
|
||||
typedef intrusive_ptr<N::reference_counted_class,
|
||||
offset_ptr<void> > intrusive_ptr_t;
|
||||
intrusive_ptr_t m_intrusive_ptr;
|
||||
|
||||
public:
|
||||
//Takes a pointer to the reference counted class
|
||||
intrusive_ptr_owner(N::reference_counted_class *ptr)
|
||||
: m_intrusive_ptr(ptr){}
|
||||
};
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("my_shmem");
|
||||
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory shmem(create_only, "my_shmem", 10000);
|
||||
|
||||
//Create the unique reference counted object in shared memory
|
||||
N::reference_counted_class *ref_counted =
|
||||
shmem.construct<N::reference_counted_class>
|
||||
("ref_counted")(shmem.get_segment_manager());
|
||||
|
||||
//Create an array of ten intrusive pointer owners in shared memory
|
||||
intrusive_ptr_owner *intrusive_owner_array =
|
||||
shmem.construct<intrusive_ptr_owner>
|
||||
(anonymous_instance)[10](ref_counted);
|
||||
|
||||
//Now test that reference count is ten
|
||||
if(ref_counted->use_count() != 10)
|
||||
return 1;
|
||||
|
||||
//Now destroy the array of intrusive pointer owners
|
||||
//This should destroy every intrusive_ptr and because of
|
||||
//that reference_counted_class will be destroyed
|
||||
shmem.destroy_ptr(intrusive_owner_array);
|
||||
|
||||
//Now the reference counted object should have been destroyed
|
||||
if(shmem.find<intrusive_ptr_owner>("ref_counted").first)
|
||||
return 1;
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("my_shmem");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("my_shmem");
|
||||
//Success!
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
55
example/doc_ipc_messageA.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_ipc_messageA
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//An special shared memory from which we are
|
||||
//able to allocate raw memory buffers.
|
||||
//First remove any old shared memory of the same name, create
|
||||
//the shared memory segment and initialize needed resources
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
managed_shared_memory segment
|
||||
(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Allocate a portion of the segment
|
||||
void * shptr = segment.allocate(1024/*bytes to allocate*/);
|
||||
|
||||
//An handle from the base address can identify any byte of the shared
|
||||
//memory segment even if it is mapped in different base addresses
|
||||
managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
|
||||
(void)handle;
|
||||
// Copy message to buffer
|
||||
// . . .
|
||||
// Send handle to other process
|
||||
// . . .
|
||||
// Wait response from other process
|
||||
// . . .
|
||||
|
||||
//Deallocate the portion previously allocated
|
||||
segment.deallocate(shptr);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
47
example/doc_ipc_messageB.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_ipc_messageB
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
try{
|
||||
//An special shared memory from which we are
|
||||
//able to allocate raw memory buffers.
|
||||
//Connect to the already created shared memory segment
|
||||
//and initialize needed resources
|
||||
managed_shared_memory segment(open_only, "MySharedMemory"); //segment name
|
||||
|
||||
//An handle from the base address can identify any byte of the shared
|
||||
//memory segment even if it is mapped in different base addresses
|
||||
managed_shared_memory::handle_t handle = 0;
|
||||
|
||||
//Wait handle msg from the other process and put it in
|
||||
//"handle" local variable
|
||||
//Get buffer local address from handle
|
||||
void *msg = segment.get_address_from_handle(handle);
|
||||
(void)msg;
|
||||
//Do anything with msg
|
||||
//. . .
|
||||
//Send ack to sender process
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
69
example/doc_managed_aligned_allocation.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_aligned_allocation
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <cassert>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Managed memory segment that allocates portions of a shared memory
|
||||
//segment with the default management algorithm
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
|
||||
try{
|
||||
managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
|
||||
|
||||
const std::size_t Alignment = 128;
|
||||
|
||||
//Allocate 100 bytes aligned to Alignment from segment, throwing version
|
||||
void *ptr = managed_shm.allocate_aligned(100, Alignment);
|
||||
|
||||
//Check alignment
|
||||
assert(((char*)ptr-(char*)0) % Alignment == 0);
|
||||
|
||||
//Deallocate it
|
||||
managed_shm.deallocate(ptr);
|
||||
|
||||
//Non throwing version
|
||||
ptr = managed_shm.allocate_aligned(100, Alignment, std::nothrow);
|
||||
|
||||
//Check alignment
|
||||
assert(((char*)ptr-(char*)0) % Alignment == 0);
|
||||
|
||||
//Deallocate it
|
||||
managed_shm.deallocate(ptr);
|
||||
|
||||
//If we want to efficiently allocate aligned blocks of memory
|
||||
//use managed_shared_memory::PayloadPerAllocation value
|
||||
assert(Alignment > managed_shared_memory::PayloadPerAllocation);
|
||||
|
||||
//This allocation will maximize the size of the aligned memory
|
||||
//and will increase the possibility of finding more aligned memory
|
||||
ptr = managed_shm.allocate_aligned
|
||||
(3*Alignment - managed_shared_memory::PayloadPerAllocation, Alignment);
|
||||
|
||||
//Check alignment
|
||||
assert(((char*)ptr-(char*)0) % Alignment == 0);
|
||||
|
||||
//Deallocate it
|
||||
managed_shm.deallocate(ptr);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
89
example/doc_managed_allocation_command.cpp
Normal file
@@ -0,0 +1,89 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_allocation_command
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <cassert>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Managed memory segment that allocates portions of a shared memory
|
||||
//segment with the default management algorithm
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
|
||||
try{
|
||||
managed_shared_memory managed_shm(create_only, "MyManagedShm", 10000*sizeof(std::size_t));
|
||||
|
||||
//Allocate at least 100 bytes, 1000 bytes if possible
|
||||
std::size_t received_size, min_size = 100, preferred_size = 1000;
|
||||
std::size_t *ptr = managed_shm.allocation_command<std::size_t>
|
||||
(allocate_new, min_size, preferred_size, received_size).first;
|
||||
|
||||
//Received size must be bigger than min_size
|
||||
assert(received_size >= min_size);
|
||||
|
||||
//Get free memory
|
||||
std::size_t free_memory_after_allocation = managed_shm.get_free_memory();
|
||||
|
||||
//Now write the data
|
||||
for(std::size_t i = 0; i < received_size; ++i) ptr[i] = i;
|
||||
|
||||
//Now try to triplicate the buffer. We won't admit an expansion
|
||||
//lower to the double of the original buffer.
|
||||
//This "should" be successful since no other class is allocating
|
||||
//memory from the segment
|
||||
std::size_t expanded_size;
|
||||
std::pair<std::size_t *, bool> ret = managed_shm.allocation_command
|
||||
(expand_fwd, received_size*2, received_size*3, expanded_size, ptr);
|
||||
|
||||
//Check invariants
|
||||
assert(ret.second == true);
|
||||
assert(ret.first == ptr);
|
||||
assert(expanded_size >= received_size*2);
|
||||
|
||||
//Get free memory and compare
|
||||
std::size_t free_memory_after_expansion = managed_shm.get_free_memory();
|
||||
assert(free_memory_after_expansion < free_memory_after_allocation);
|
||||
|
||||
//Write new values
|
||||
for(std::size_t i = received_size; i < expanded_size; ++i) ptr[i] = i;
|
||||
|
||||
//Try to shrink approximately to min_size, but the new size
|
||||
//should be smaller than min_size*2.
|
||||
//This "should" be successful since no other class is allocating
|
||||
//memory from the segment
|
||||
std::size_t shrunk_size;
|
||||
ret = managed_shm.allocation_command
|
||||
(shrink_in_place, min_size*2, min_size, shrunk_size, ptr);
|
||||
|
||||
//Check invariants
|
||||
assert(ret.second == true);
|
||||
assert(ret.first == ptr);
|
||||
assert(shrunk_size <= min_size*2);
|
||||
assert(shrunk_size >= min_size);
|
||||
|
||||
//Get free memory and compare
|
||||
std::size_t free_memory_after_shrinking = managed_shm.get_free_memory();
|
||||
assert(free_memory_after_shrinking > free_memory_after_expansion);
|
||||
|
||||
//Deallocate the buffer
|
||||
managed_shm.deallocate(ptr);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
62
example/doc_managed_construction_info.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_construction_info
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <cassert>
|
||||
#include <cstring>
|
||||
|
||||
class my_class
|
||||
{
|
||||
//...
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef managed_shared_memory msm;
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
|
||||
try{
|
||||
msm managed_shm(create_only, "MyManagedShm", 10000*sizeof(std::size_t));
|
||||
|
||||
//Construct objects
|
||||
my_class *named_object = managed_shm.construct<my_class>("Object name")[1]();
|
||||
my_class *unique_object = managed_shm.construct<my_class>(unique_instance)[2]();
|
||||
my_class *anon_object = managed_shm.construct<my_class>(anonymous_instance)[3]();
|
||||
|
||||
//Now test "get_instance_name" function.
|
||||
assert(0 == std::strcmp(msm::get_instance_name(named_object), "Object name"));
|
||||
assert(0 == msm::get_instance_name(unique_object));
|
||||
assert(0 == msm::get_instance_name(anon_object));
|
||||
|
||||
//Now test "get_instance_type" function.
|
||||
assert(named_type == msm::get_instance_type(named_object));
|
||||
assert(unique_type == msm::get_instance_type(unique_object));
|
||||
assert(anonymous_type == msm::get_instance_type(anon_object));
|
||||
|
||||
//Now test "get_instance_length" function.
|
||||
assert(1 == msm::get_instance_length(named_object));
|
||||
assert(2 == msm::get_instance_length(unique_object));
|
||||
assert(3 == msm::get_instance_length(anon_object));
|
||||
|
||||
managed_shm.destroy_ptr(named_object);
|
||||
managed_shm.destroy_ptr(unique_object);
|
||||
managed_shm.destroy_ptr(anon_object);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
68
example/doc_managed_external_buffer.cpp
Normal file
@@ -0,0 +1,68 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_external_buffer
|
||||
#include <boost/interprocess/managed_external_buffer.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/containers/list.hpp>
|
||||
#include <cstring>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Create the static memory who will store all objects
|
||||
const int memsize = 65536;
|
||||
static char static_buffer [memsize];
|
||||
|
||||
//This managed memory will construct objects associated with
|
||||
//a wide string in the static buffer
|
||||
wmanaged_external_buffer objects_in_static_memory
|
||||
(create_only, static_buffer, memsize);
|
||||
|
||||
//We optimize resources to create 100 named objects in the static buffer
|
||||
objects_in_static_memory.reserve_named_objects(100);
|
||||
|
||||
//Alias a integer node allocator type
|
||||
//This allocator will allocate memory inside the static buffer
|
||||
typedef allocator<int, wmanaged_external_buffer::segment_manager>
|
||||
allocator_t;
|
||||
|
||||
//Alias a STL compatible list to be constructed in the static buffer
|
||||
typedef list<int, allocator_t> MyBufferList;
|
||||
|
||||
//The list must be initialized with the allocator
|
||||
//All objects created with objects_in_static_memory will
|
||||
//be stored in the static_buffer!
|
||||
MyBufferList *list = objects_in_static_memory.construct<MyBufferList>(L"MyList")
|
||||
(objects_in_static_memory.get_segment_manager());
|
||||
|
||||
//Since the allocation algorithm from wmanaged_external_buffer uses relative
|
||||
//pointers and all the pointers constructed int the static memory point
|
||||
//to objects in the same segment, we can create another static buffer
|
||||
//from the first one and duplicate all the data.
|
||||
static char static_buffer2 [memsize];
|
||||
std::memcpy(static_buffer2, static_buffer, memsize);
|
||||
|
||||
//Now open the duplicated managed memory passing the memory as argument
|
||||
wmanaged_external_buffer objects_in_static_memory2
|
||||
(open_only, static_buffer2, memsize);
|
||||
|
||||
//Check that "MyList" has been duplicated in the second buffer
|
||||
if(!objects_in_static_memory2.find<MyBufferList>(L"MyList").first)
|
||||
return 1;
|
||||
|
||||
//Destroy the lists from the static buffers
|
||||
objects_in_static_memory.destroy<MyBufferList>(L"MyList");
|
||||
objects_in_static_memory2.destroy<MyBufferList>(L"MyList");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
69
example/doc_managed_grow.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_grow
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/managed_mapped_file.hpp>
|
||||
#include <cassert>
|
||||
|
||||
class MyClass
|
||||
{
|
||||
//...
|
||||
};
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
{ //Remove old shared memory if present
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
//Create a managed shared memory
|
||||
managed_shared_memory shm(create_only, "MyManagedShm", 1000);
|
||||
//Check size
|
||||
assert(shm.get_size() == 1000);
|
||||
//Construct a named object
|
||||
MyClass *myclass = shm.construct<MyClass>("MyClass")();
|
||||
//The managed segment is unmapped here
|
||||
}
|
||||
{
|
||||
//Now that the segment is not mapped grow it adding extra 500 bytes
|
||||
managed_shared_memory::grow("MyManagedShm", 500);
|
||||
//Map it again
|
||||
managed_shared_memory shm(open_only, "MyManagedShm");
|
||||
//Check size
|
||||
assert(shm.get_size() == 1500);
|
||||
//Check "MyClass" is still there
|
||||
MyClass *myclass = shm.find<MyClass>("MyClass").first;
|
||||
assert(myclass != 0);
|
||||
//The managed segment is unmapped here
|
||||
}
|
||||
{
|
||||
//Now minimize the size of the segment
|
||||
managed_shared_memory::shrink_to_fit("MyManagedShm");
|
||||
//Map it again
|
||||
managed_shared_memory shm(open_only, "MyManagedShm");
|
||||
//Check size
|
||||
assert(shm.get_size() < 1000);
|
||||
//Check "MyClass" is still there
|
||||
MyClass *myclass = shm.find<MyClass>("MyClass").first;
|
||||
assert(myclass != 0);
|
||||
//The managed segment is unmapped here
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
//Remove the managed segment
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
75
example/doc_managed_heap_memory.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_managed_heap_memory
|
||||
#include <boost/interprocess/containers/list.hpp>
|
||||
#include <boost/interprocess/managed_heap_memory.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
typedef list<int, allocator<int, managed_heap_memory::segment_manager> >
|
||||
MyList;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//We will create a buffer of 1000 bytes to store a list
|
||||
managed_heap_memory heap_memory(1000);
|
||||
|
||||
MyList * mylist = heap_memory.construct<MyList>("MyList")
|
||||
(heap_memory.get_segment_manager());
|
||||
|
||||
//Obtain handle, that identifies the list in the buffer
|
||||
managed_heap_memory::handle_t list_handle = heap_memory.get_handle_from_address(mylist);
|
||||
|
||||
//Fill list until there is no more memory in the buffer
|
||||
try{
|
||||
while(1) {
|
||||
mylist->insert(mylist->begin(), 0);
|
||||
}
|
||||
}
|
||||
catch(const bad_alloc &){
|
||||
//memory is full
|
||||
}
|
||||
//Let's obtain the size of the list
|
||||
std::size_t old_size = mylist->size();
|
||||
|
||||
//To make the list bigger, let's increase the heap buffer
|
||||
//in 1000 bytes more.
|
||||
heap_memory.grow(1000);
|
||||
|
||||
//If memory has been reallocated, the old pointer is invalid, so
|
||||
//use previously obtained handle to find the new pointer.
|
||||
mylist = static_cast<MyList *>
|
||||
(heap_memory.get_address_from_handle(list_handle));
|
||||
|
||||
//Fill list until there is no more memory in the buffer
|
||||
try{
|
||||
while(1) {
|
||||
mylist->insert(mylist->begin(), 0);
|
||||
}
|
||||
}
|
||||
catch(const bad_alloc &){
|
||||
//memory is full
|
||||
}
|
||||
|
||||
//Let's obtain the new size of the list
|
||||
std::size_t new_size = mylist->size();
|
||||
|
||||
assert(new_size > old_size);
|
||||
|
||||
//Destroy list
|
||||
heap_memory.destroy_ptr(mylist);
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
83
example/doc_managed_mapped_file.cpp
Normal file
@@ -0,0 +1,83 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
#include <boost/interprocess/containers/list.hpp>
|
||||
#include <boost/interprocess/managed_mapped_file.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <cstddef>
|
||||
#include <cstdio>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
typedef list<int, allocator<int, managed_mapped_file::segment_manager> >
|
||||
MyList;
|
||||
|
||||
int main ()
|
||||
{
|
||||
const char *FileName = "file_mapping";
|
||||
const std::size_t FileSize = 1000;
|
||||
std::remove(FileName);
|
||||
try{
|
||||
managed_mapped_file mfile_memory(create_only, FileName, FileSize);
|
||||
MyList * mylist = mfile_memory.construct<MyList>("MyList")
|
||||
(mfile_memory.get_segment_manager());
|
||||
|
||||
//Obtain handle, that identifies the list in the buffer
|
||||
managed_mapped_file::handle_t list_handle = mfile_memory.get_handle_from_address(mylist);
|
||||
|
||||
//Fill list until there is no more room in the file
|
||||
try{
|
||||
while(1) {
|
||||
mylist->insert(mylist->begin(), 0);
|
||||
}
|
||||
}
|
||||
catch(const bad_alloc &){
|
||||
//mapped file is full
|
||||
}
|
||||
//Let's obtain the size of the list
|
||||
std::size_t old_size = mylist->size();
|
||||
|
||||
//To make the list bigger, let's increase the mapped file
|
||||
//in FileSize bytes more.
|
||||
//mfile_memory.grow(FileSize);
|
||||
|
||||
//If mapping address has changed, the old pointer is invalid,
|
||||
//so use previously obtained handle to find the new pointer.
|
||||
mylist = static_cast<MyList *>
|
||||
(mfile_memory.get_address_from_handle(list_handle));
|
||||
|
||||
//Fill list until there is no more room in the file
|
||||
try{
|
||||
while(1) {
|
||||
mylist->insert(mylist->begin(), 0);
|
||||
}
|
||||
}
|
||||
catch(const bad_alloc &){
|
||||
//mapped file is full
|
||||
}
|
||||
|
||||
//Let's obtain the new size of the list
|
||||
std::size_t new_size = mylist->size();
|
||||
|
||||
assert(new_size > old_size);
|
||||
|
||||
//Destroy list
|
||||
mfile_memory.destroy_ptr(mylist);
|
||||
}
|
||||
catch(...){
|
||||
std::remove(FileName);
|
||||
throw;
|
||||
}
|
||||
std::remove(FileName);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
79
example/doc_managed_multiple_allocation.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_multiple_allocation
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <cassert>//assert
|
||||
#include <cstring>//std::memset
|
||||
#include <new> //std::nothrow
|
||||
#include <vector> //std::vector
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef managed_shared_memory::multiallocation_iterator multiallocation_iterator;
|
||||
|
||||
//Try to erase any previous managed segment with the same name
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
|
||||
try{
|
||||
managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
|
||||
|
||||
//Allocate 16 elements of 100 bytes in a single call. Non-throwing version.
|
||||
multiallocation_iterator beg_it = managed_shm.allocate_many(100, 16, std::nothrow);
|
||||
|
||||
//To check for an error, we can use a boolean expression
|
||||
//or compare it with a default constructed iterator
|
||||
assert(!beg_it == (beg_it == multiallocation_iterator()));
|
||||
|
||||
//Check if the memory allocation was successful
|
||||
if(!beg_it) return 1;
|
||||
|
||||
//Allocated buffers
|
||||
std::vector<char*> allocated_buffers;
|
||||
|
||||
//Initialize our data
|
||||
for( multiallocation_iterator it = beg_it, end_it; it != end_it; ){
|
||||
allocated_buffers.push_back(&*it);
|
||||
//The iterator must be incremented before overwriting memory
|
||||
//because otherwise, the iterator is invalidated.
|
||||
std::memset(&*it++, 0, 100);
|
||||
}
|
||||
|
||||
//Now deallocate
|
||||
while(!allocated_buffers.empty()){
|
||||
managed_shm.deallocate(allocated_buffers.back());
|
||||
allocated_buffers.pop_back();
|
||||
}
|
||||
|
||||
//Allocate 10 buffers of different sizes in a single call. Throwing version
|
||||
std::size_t sizes[10];
|
||||
for(std::size_t i = 0; i < 10; ++i)
|
||||
sizes[i] = i*3;
|
||||
|
||||
beg_it = managed_shm.allocate_many(sizes, 10);
|
||||
|
||||
//Iterate each allocated buffer and deallocate
|
||||
//The "end" condition can be also checked with operator!
|
||||
for(multiallocation_iterator it = beg_it; it;){
|
||||
//The iterator must be incremented before overwriting memory
|
||||
//because otherwise, the iterator is invalidated.
|
||||
managed_shm.deallocate(&*it++);
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
44
example/doc_managed_raw_allocation.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_managed_raw_allocation
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
|
||||
int main()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Managed memory segment that allocates portions of a shared memory
|
||||
//segment with the default management algorithm
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
try{
|
||||
managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
|
||||
|
||||
//Allocate 100 bytes of memory from segment, throwing version
|
||||
void *ptr = managed_shm.allocate(100);
|
||||
|
||||
//Deallocate it
|
||||
managed_shm.deallocate(ptr);
|
||||
|
||||
//Non throwing version
|
||||
ptr = managed_shm.allocate(100, std::nothrow);
|
||||
|
||||
//Deallocate it
|
||||
managed_shm.deallocate(ptr);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MyManagedShm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
75
example/doc_map.cpp
Normal file
@@ -0,0 +1,75 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_map
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/map.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <functional>
|
||||
#include <utility>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
//Shared memory front-end that is able to construct objects
|
||||
//associated with a c-string. Erase previous shared memory with the name
|
||||
//to be used and create the memory segment at the specified address and initialize resources
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
try{
|
||||
managed_shared_memory segment
|
||||
(create_only
|
||||
,"MySharedMemory" //segment name
|
||||
,65536); //segment size in bytes
|
||||
|
||||
//Note that map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
|
||||
//so the allocator must allocate that pair.
|
||||
typedef int KeyType;
|
||||
typedef float MappedType;
|
||||
typedef std::pair<const int, float> ValueType;
|
||||
|
||||
//Alias an STL compatible allocator of for the map.
|
||||
//This allocator will allow to place containers
|
||||
//in managed shared memory segments
|
||||
typedef allocator<ValueType, managed_shared_memory::segment_manager>
|
||||
ShmemAllocator;
|
||||
|
||||
//Alias a map of ints that uses the previous STL-like allocator.
|
||||
//Note that the third parameter argument is the ordering function
|
||||
//of the map, just like with std::map, used to compare the keys.
|
||||
typedef map<KeyType, MappedType, std::less<KeyType>, ShmemAllocator> MyMap;
|
||||
|
||||
//Initialize the shared memory STL-compatible allocator
|
||||
ShmemAllocator alloc_inst (segment.get_segment_manager());
|
||||
|
||||
//Construct a shared memory map.
|
||||
//Note that the first parameter is the comparison function,
|
||||
//and the second one the allocator.
|
||||
//This the same signature as std::map's constructor taking an allocator
|
||||
MyMap *mymap =
|
||||
segment.construct<MyMap>("MyMap") //object name
|
||||
(std::less<int>() //first ctor parameter
|
||||
,alloc_inst); //second ctor parameter
|
||||
|
||||
//Insert data in the map
|
||||
for(int i = 0; i < 100; ++i){
|
||||
mymap->insert(std::pair<const int, float>(i, (float)i));
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
47
example/doc_message_queueA.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_message_queueA
|
||||
#include <boost/interprocess/ipc/message_queue.hpp>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Erase previous message queue
|
||||
message_queue::remove("message_queue");
|
||||
|
||||
//Create a message_queue.
|
||||
message_queue mq
|
||||
(create_only //only create
|
||||
,"message_queue" //name
|
||||
,100 //max message number
|
||||
,sizeof(int) //max message size
|
||||
);
|
||||
|
||||
//Send 100 numbers
|
||||
for(int i = 0; i < 100; ++i){
|
||||
mq.send(&i, sizeof(i), 0);
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
message_queue::remove("message_queue");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
message_queue::remove("message_queue");
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
47
example/doc_message_queueB.cpp
Normal file
@@ -0,0 +1,47 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_message_queueB
|
||||
#include <boost/interprocess/ipc/message_queue.hpp>
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
try{
|
||||
//Open a message queue.
|
||||
message_queue mq
|
||||
(open_only //only create
|
||||
,"message_queue" //name
|
||||
);
|
||||
|
||||
unsigned int priority;
|
||||
std::size_t recvd_size;
|
||||
|
||||
//Receive 100 numbers
|
||||
for(int i = 0; i < 100; ++i){
|
||||
int number;
|
||||
mq.receive(&number, sizeof(number), recvd_size, priority);
|
||||
if(number != i || recvd_size != sizeof(number))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
message_queue::remove("message_queue");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
message_queue::remove("message_queue");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
85
example/doc_move_containers.cpp
Normal file
@@ -0,0 +1,85 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_move_containers
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/containers/string.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <cassert>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Typedefs
|
||||
typedef managed_shared_memory::segment_manager SegmentManager;
|
||||
typedef allocator<char, SegmentManager> CharAllocator;
|
||||
typedef basic_string<char, std::char_traits<char>
|
||||
,CharAllocator> MyShmString;
|
||||
typedef allocator<MyShmString, SegmentManager> StringAllocator;
|
||||
typedef vector<MyShmString, StringAllocator> MyShmStringVector;
|
||||
|
||||
//Remove old shared memory and create new one
|
||||
shared_memory_object::remove("myshm");
|
||||
try{
|
||||
managed_shared_memory shm(create_only, "myshm", 10000);
|
||||
|
||||
//Create allocators
|
||||
CharAllocator charallocator (shm.get_segment_manager());
|
||||
StringAllocator stringallocator(shm.get_segment_manager());
|
||||
|
||||
//Create a vector of strings in shared memory.
|
||||
MyShmStringVector *myshmvector =
|
||||
shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
|
||||
|
||||
//Insert 50 strings in shared memory. The strings will be allocated
|
||||
//only once and no string copy-constructor will be called when inserting
|
||||
//strings, leading to a great performance.
|
||||
MyShmString string_to_compare(charallocator);
|
||||
string_to_compare = "this is a long, long, long, long, long, long, string...";
|
||||
|
||||
myshmvector->reserve(50);
|
||||
for(int i = 0; i < 50; ++i){
|
||||
MyShmString move_me(string_to_compare);
|
||||
//In the following line, no string copy-constructor will be called.
|
||||
//"move_me"'s contents will be transferred to the string created in
|
||||
//the vector
|
||||
myshmvector->push_back(move(move_me));
|
||||
|
||||
//The source string is in default constructed state
|
||||
assert(move_me.empty());
|
||||
|
||||
//The newly created string will be equal to the "move_me"'s old contents
|
||||
assert(myshmvector->back() == string_to_compare);
|
||||
}
|
||||
|
||||
//Now erase a string...
|
||||
myshmvector->pop_back();
|
||||
|
||||
//...And insert one in the first position.
|
||||
//No string copy-constructor or assignments will be called, but
|
||||
//move constructors and move-assignments. No memory allocation
|
||||
//function will be called in this operations!!
|
||||
myshmvector->insert(myshmvector->begin(), move(string_to_compare));
|
||||
|
||||
//Destroy vector. This will free all strings that the vector contains
|
||||
shm.destroy_ptr(myshmvector);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("myshmvector");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("myshmvector");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
61
example/doc_named_allocA.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_named_allocA
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <utility>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef std::pair<double, int> MyType;
|
||||
|
||||
try{
|
||||
//An special shared memory where we can
|
||||
//construct objects associated with a name.
|
||||
//First remove any old shared memory of the same name, create
|
||||
//the shared memory segment and initialize needed resources
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
managed_shared_memory segment
|
||||
//create segment name segment size
|
||||
(create_only, "MySharedMemory", 65536);
|
||||
|
||||
//Create an object of MyType initialized to {0.0, 0}
|
||||
MyType *instance = segment.construct<MyType>
|
||||
("MyType instance") //name of the object
|
||||
(0.0, 0); //ctor first argument
|
||||
|
||||
//Create an array of 10 elements of MyType initialized to {0.0, 0}
|
||||
MyType *array = segment.construct<MyType>
|
||||
("MyType array") //name of the object
|
||||
[10] //number of elements
|
||||
(0.0, 0); //Same two ctor arguments for all objects
|
||||
|
||||
//Create an array of 3 elements of MyType initializing each one
|
||||
//to a different value {0.0, 0}, {1.0, 1}, {2.0, 2}...
|
||||
float float_initializer[3] = { 0.0, 1.0, 2.0 };
|
||||
int int_initializer[3] = { 0, 1, 2 };
|
||||
|
||||
MyType *array_it = segment.construct_it<MyType>
|
||||
("MyType array from it") //name of the object
|
||||
[3] //number of elements
|
||||
( &float_initializer[0] //Iterator for the 1st ctor argument
|
||||
, &int_initializer[0]); //Iterator for the 2nd ctor argument
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
63
example/doc_named_allocB.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_named_allocB
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <cstddef>
|
||||
#include <utility>
|
||||
#include <cassert>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef std::pair<double, int> MyType;
|
||||
|
||||
try{
|
||||
//An special shared memory where we can
|
||||
//construct objects associated with a name.
|
||||
//Connect to the already created shared memory segment
|
||||
//and initialize needed resources
|
||||
managed_shared_memory segment(open_only, "MySharedMemory");
|
||||
|
||||
std::pair<MyType*, std::size_t> res;
|
||||
|
||||
//Find the array
|
||||
res = segment.find<MyType> ("MyType array");
|
||||
//Length should be 10
|
||||
assert(res.second == 10);
|
||||
|
||||
//Find the object
|
||||
res = segment.find<MyType> ("MyType instance");
|
||||
//Length should be 1
|
||||
assert(res.second == 1);
|
||||
|
||||
//Find the array constructed from iterators
|
||||
res = segment.find<MyType> ("MyType array from it");
|
||||
//Length should be 3
|
||||
assert(res.second == 3);
|
||||
|
||||
//Use data
|
||||
// . . .
|
||||
|
||||
//We're done, delete all the objects
|
||||
segment.destroy<MyType>("MyType array");
|
||||
segment.destroy<MyType>("MyType instance");
|
||||
segment.destroy<MyType>("MyType array from it");
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
35
example/doc_named_condition_shared_data.hpp
Normal file
@@ -0,0 +1,35 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/sync/interprocess_mutex.hpp>
|
||||
#include <boost/interprocess/sync/interprocess_condition.hpp>
|
||||
|
||||
struct trace_queue
|
||||
{
|
||||
enum { LineSize = 100 };
|
||||
|
||||
trace_queue()
|
||||
: message_in(false)
|
||||
{}
|
||||
|
||||
//Mutex to protect access to the queue
|
||||
boost::interprocess::interprocess_mutex mutex;
|
||||
|
||||
//Condition to wait when the queue is empty
|
||||
boost::interprocess::interprocess_condition cond_empty;
|
||||
|
||||
//Condition to wait when the queue is full
|
||||
boost::interprocess::interprocess_condition cond_full;
|
||||
|
||||
//Items to fill
|
||||
char items[LineSize];
|
||||
|
||||
//Is there any message
|
||||
bool message_in;
|
||||
};
|
||||
46
example/doc_named_mutex.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_named_mutex
|
||||
#include <boost/interprocess/sync/scoped_lock.hpp>
|
||||
#include <boost/interprocess/sync/named_mutex.hpp>
|
||||
#include <fstream>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
|
||||
//Open or create the named mutex
|
||||
named_mutex mutex(open_or_create, "fstream_named_mutex");
|
||||
|
||||
std::ofstream file("file_name");
|
||||
|
||||
for(int i = 0; i < 10; ++i){
|
||||
|
||||
//Do some operations...
|
||||
|
||||
//Write to file atomically
|
||||
scoped_lock<named_mutex> lock(mutex);
|
||||
file << "Process name, ";
|
||||
file << "This is iteration #" << i;
|
||||
file << std::endl;
|
||||
}
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
named_mutex::remove("fstream_named_mutex");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
named_mutex::remove("fstream_named_mutex");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
64
example/doc_node_allocator.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_node_allocator
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/node_allocator.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a node_allocator that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef node_allocator<int, managed_shared_memory::segment_manager>
|
||||
node_allocator_t;
|
||||
node_allocator_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//Create another node_allocator. Since the segment manager address
|
||||
//is the same, this node_allocator will be
|
||||
//attached to the same pool so "allocator_instance2" can deallocate
|
||||
//nodes allocated by "allocator_instance"
|
||||
node_allocator_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//Create another node_allocator using copy-constructor. This
|
||||
//node_allocator will also be attached to the same pool
|
||||
node_allocator_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//All allocators are equal
|
||||
assert(allocator_instance == allocator_instance2);
|
||||
assert(allocator_instance2 == allocator_instance3);
|
||||
|
||||
//So memory allocated with one can be deallocated with another
|
||||
allocator_instance2.deallocate(allocator_instance.allocate(1), 1);
|
||||
allocator_instance3.deallocate(allocator_instance2.allocate(1), 1);
|
||||
|
||||
//The common pool will be destroyed here, since no allocator is
|
||||
//attached to the pool
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
69
example/doc_offset_ptr.cpp
Normal file
@@ -0,0 +1,69 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_offset_ptr
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/offset_ptr.hpp>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Shared memory linked list node
|
||||
struct list_node
|
||||
{
|
||||
offset_ptr<list_node> next;
|
||||
int value;
|
||||
};
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Destroy any previous shared memory with the name to be used.
|
||||
//Create an special shared memory from which we can
|
||||
//allocate buffers of raw memory.
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
managed_shared_memory segment(
|
||||
create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Create linked list with 10 nodes in shared memory
|
||||
offset_ptr<list_node> prev = 0, current, first;
|
||||
|
||||
int i;
|
||||
for(i = 0; i < 10; ++i, prev = current){
|
||||
current = static_cast<list_node*>(segment.allocate(sizeof(list_node)));
|
||||
current->value = i;
|
||||
current->next = 0;
|
||||
|
||||
if(!prev)
|
||||
first = current;
|
||||
else
|
||||
prev->next = current;
|
||||
}
|
||||
|
||||
//Communicate list to other processes
|
||||
//. . .
|
||||
//When done, destroy list
|
||||
for(current = first; current; /**/){
|
||||
prev = current;
|
||||
current = current->next;
|
||||
segment.deallocate(prev.get());
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
60
example/doc_private_adaptive_pool.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_private_adaptive_pool
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/private_adaptive_pool.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a private_adaptive_pool that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef private_adaptive_pool<int, managed_shared_memory::segment_manager>
|
||||
private_adaptive_pool_t;
|
||||
private_adaptive_pool_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//Create another private_adaptive_pool.
|
||||
private_adaptive_pool_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//Although the segment manager address
|
||||
//is the same, this private_adaptive_pool will have its own pool so
|
||||
//"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
|
||||
//"allocator_instance2" is NOT equal to "allocator_instance"
|
||||
assert(allocator_instance != allocator_instance2);
|
||||
|
||||
//Create another adaptive_pool using copy-constructor.
|
||||
private_adaptive_pool_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//This allocator is also unequal to allocator_instance2
|
||||
assert(allocator_instance2 != allocator_instance3);
|
||||
|
||||
//Pools are destroyed with the allocators
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
60
example/doc_private_node_allocator.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_private_node_allocator
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/allocators/private_node_allocator.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
try{
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536);
|
||||
|
||||
//Create a private_node_allocator that allocates ints from the managed segment
|
||||
//The number of chunks per segment is the default value
|
||||
typedef private_node_allocator<int, managed_shared_memory::segment_manager>
|
||||
private_node_allocator_t;
|
||||
private_node_allocator_t allocator_instance(segment.get_segment_manager());
|
||||
|
||||
//Create another private_node_allocator.
|
||||
private_node_allocator_t allocator_instance2(segment.get_segment_manager());
|
||||
|
||||
//Although the segment manager address
|
||||
//is the same, this private_node_allocator will have its own pool so
|
||||
//"allocator_instance2" CAN'T deallocate nodes allocated by "allocator_instance".
|
||||
//"allocator_instance2" is NOT equal to "allocator_instance"
|
||||
assert(allocator_instance != allocator_instance2);
|
||||
|
||||
//Create another node_allocator using copy-constructor.
|
||||
private_node_allocator_t allocator_instance3(allocator_instance2);
|
||||
|
||||
//This allocator is also unequal to allocator_instance2
|
||||
assert(allocator_instance2 != allocator_instance3);
|
||||
|
||||
//Pools are destroyed with the allocators
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
107
example/doc_scoped_ptr.cpp
Normal file
@@ -0,0 +1,107 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_scoped_ptr
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/smart_ptr/scoped_ptr.hpp>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
class my_class
|
||||
{};
|
||||
|
||||
class my_exception
|
||||
{};
|
||||
|
||||
//A functor that destroys the shared memory object
|
||||
template<class T>
|
||||
class my_deleter
|
||||
{
|
||||
private:
|
||||
//A typedef to save typing
|
||||
typedef managed_shared_memory::segment_manager segment_manager;
|
||||
//This my_deleter is created in the stack, not in shared memory,
|
||||
//so we can use raw pointers
|
||||
segment_manager *mp_segment_manager;
|
||||
|
||||
public:
|
||||
//This typedef will specify the pointer type that
|
||||
//scoped_ptr will store
|
||||
typedef T *pointer;
|
||||
//Constructor
|
||||
my_deleter(segment_manager *s_mngr)
|
||||
: mp_segment_manager(s_mngr){}
|
||||
|
||||
void operator()(pointer object_to_delete)
|
||||
{ mp_segment_manager->destroy_ptr(object_to_delete); }
|
||||
};
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Create shared memory
|
||||
shared_memory_object::remove("my_shmem");
|
||||
try{
|
||||
managed_shared_memory shmem(create_only, "my_shmem", 10000);
|
||||
|
||||
//In the first try, there will be no exceptions
|
||||
//in the second try we will throw an exception
|
||||
for(int i = 0; i < 2; ++i){
|
||||
//Create an object in shared memory
|
||||
my_class * my_object = shmem.construct<my_class>("my_object")();
|
||||
my_class * my_object2 = shmem.construct<my_class>(anonymous_instance)();
|
||||
shmem.destroy_ptr(my_object2);
|
||||
|
||||
//Since the next shared memory allocation can throw
|
||||
//assign it to a scoped_ptr so that if an exception occurs
|
||||
//we destroy the object automatically
|
||||
my_deleter<my_class> d(shmem.get_segment_manager());
|
||||
|
||||
try{
|
||||
scoped_ptr<my_class, my_deleter<my_class> > s_ptr(my_object, d);
|
||||
//Let's emulate a exception capable operation
|
||||
//In the second try, throw an exception
|
||||
if(i == 1){
|
||||
throw(my_exception());
|
||||
}
|
||||
//If we have passed the dangerous zone
|
||||
//we can release the scoped pointer
|
||||
//to avoid destruction
|
||||
s_ptr.release();
|
||||
}
|
||||
catch(const my_exception &){}
|
||||
//Here, scoped_ptr is destroyed
|
||||
//so it we haven't thrown an exception
|
||||
//the object should be there, otherwise, destroyed
|
||||
if(i == 0){
|
||||
//Make sure the object is alive
|
||||
if(!shmem.find<my_class>("my_object").first){
|
||||
return 1;
|
||||
}
|
||||
//Now we can use it and delete it manually
|
||||
shmem.destroy<my_class>("my_object");
|
||||
}
|
||||
else{
|
||||
//Make sure the object has been deleted
|
||||
if(shmem.find<my_class>("my_object").first){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("my_shmem");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("my_shmem");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
45
example/doc_shared_memory.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_shared_memory
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//Create a shared memory object.
|
||||
shared_memory_object shm (create_only, "shared_memory", read_write);
|
||||
|
||||
//Set size
|
||||
shm.truncate(1000);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region(shm, read_write);
|
||||
|
||||
//Write all the memory to 1
|
||||
std::memset(region.get_address(), 1, region.get_size());
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
shared_memory_object::remove("shared_memory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
46
example/doc_shared_memory2.cpp
Normal file
@@ -0,0 +1,46 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
//[doc_shared_memory2
|
||||
#include <boost/interprocess/shared_memory_object.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Open already created shared memory object.
|
||||
shared_memory_object shm (open_only, "shared_memory", read_only);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region(shm, read_only);
|
||||
|
||||
//Check that memory was initialized to 1
|
||||
const char *mem = static_cast<char*>(region.get_address());
|
||||
for(std::size_t i = 0; i < region.get_size(); ++i){
|
||||
if(*mem++ != 1){
|
||||
std::cout << "Error checking memory!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
std::cout << "Test successful!" << std::endl;
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
std::cout << "Unexpected exception: " << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
121
example/doc_shared_ptr.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007.
|
||||
// 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
//[doc_shared_ptr
|
||||
#include <boost/interprocess/managed_mapped_file.hpp>
|
||||
#include <boost/interprocess/smart_ptr/shared_ptr.hpp>
|
||||
#include <boost/interprocess/smart_ptr/weak_ptr.hpp>
|
||||
#include <cassert>
|
||||
#include <cstdio> //std::remove
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//This is type of the object we want to share
|
||||
struct type_to_share
|
||||
{};
|
||||
|
||||
//This is the type of a shared pointer to the previous type
|
||||
//that will be built in the mapped file
|
||||
typedef managed_shared_ptr<type_to_share, managed_mapped_file>::type shared_ptr_type;
|
||||
typedef managed_weak_ptr<type_to_share, managed_mapped_file>::type weak_ptr_type;
|
||||
|
||||
//This is a type holding a shared pointer
|
||||
struct shared_ptr_owner
|
||||
{
|
||||
shared_ptr_owner(const shared_ptr_type &other_shared_ptr)
|
||||
: shared_ptr_(other_shared_ptr)
|
||||
{}
|
||||
|
||||
shared_ptr_owner(const shared_ptr_owner &other_owner)
|
||||
: shared_ptr_(other_owner.shared_ptr_)
|
||||
{}
|
||||
|
||||
shared_ptr_type shared_ptr_;
|
||||
//...
|
||||
};
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Destroy any previous file with the name to be used.
|
||||
std::remove("MyMappedFile");
|
||||
{
|
||||
managed_mapped_file file(create_only, "MyMappedFile", 4096);
|
||||
|
||||
//Construct the shared type in the file and
|
||||
//pass ownership to this local shared pointer
|
||||
shared_ptr_type local_shared_ptr = make_managed_shared_ptr
|
||||
(file.construct<type_to_share>("object to share")(), file);
|
||||
assert(local_shared_ptr.use_count() == 1);
|
||||
|
||||
//Share ownership of the object between local_shared_ptr and a new "owner1"
|
||||
shared_ptr_owner *owner1 =
|
||||
file.construct<shared_ptr_owner>("owner1")(local_shared_ptr);
|
||||
assert(local_shared_ptr.use_count() == 2);
|
||||
|
||||
//local_shared_ptr releases object ownership
|
||||
local_shared_ptr.reset();
|
||||
assert(local_shared_ptr.use_count() == 0);
|
||||
assert(owner1->shared_ptr_.use_count() == 1);
|
||||
|
||||
//Share ownership of the object between "owner1" and a new "owner2"
|
||||
shared_ptr_owner *owner2 =
|
||||
file.construct<shared_ptr_owner>("owner2")(*owner1);
|
||||
assert(owner1->shared_ptr_.use_count() == 2);
|
||||
assert(owner2->shared_ptr_.use_count() == 2);
|
||||
assert(owner1->shared_ptr_.get() == owner2->shared_ptr_.get());
|
||||
|
||||
//The mapped file is unmapped here. Objects have been flushed to disk
|
||||
}
|
||||
{
|
||||
//Reopen the mapped file and find again all owners
|
||||
managed_mapped_file file(open_only, "MyMappedFile");
|
||||
shared_ptr_owner *owner1 = file.find<shared_ptr_owner>("owner1").first;
|
||||
shared_ptr_owner *owner2 = file.find<shared_ptr_owner>("owner2").first;
|
||||
assert(owner1 && owner2);
|
||||
|
||||
//Check everything is as expected
|
||||
assert(file.find<type_to_share>("object to share").first != 0);
|
||||
assert(owner1->shared_ptr_.use_count() == 2);
|
||||
assert(owner2->shared_ptr_.use_count() == 2);
|
||||
assert(owner1->shared_ptr_.get() == owner2->shared_ptr_.get());
|
||||
|
||||
//Now destroy one of the owners, the reference count drops.
|
||||
file.destroy_ptr(owner1);
|
||||
assert(owner2->shared_ptr_.use_count() == 1);
|
||||
|
||||
//Create a weak pointer
|
||||
weak_ptr_type local_observer1(owner2->shared_ptr_);
|
||||
assert(local_observer1.use_count() == owner2->shared_ptr_.use_count());
|
||||
|
||||
{ //Create a local shared pointer from the weak pointer
|
||||
shared_ptr_type local_shared_ptr = local_observer1.lock();
|
||||
assert(local_observer1.use_count() == owner2->shared_ptr_.use_count());
|
||||
assert(local_observer1.use_count() == 2);
|
||||
}
|
||||
|
||||
//Now destroy the remaining owner. "object to share" will be destroyed
|
||||
file.destroy_ptr(owner2);
|
||||
assert(file.find<type_to_share>("object to share").first == 0);
|
||||
|
||||
//Test observer
|
||||
assert(local_observer1.expired());
|
||||
assert(local_observer1.use_count() == 0);
|
||||
|
||||
//The reference count will be deallocated when all weak pointers
|
||||
//disappear. After that, the file is unmapped.
|
||||
}
|
||||
std::remove("MyMappedFile");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
56
example/doc_shared_ptr_explicit.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007.
|
||||
// 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
//[doc_shared_ptr_explicit
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/smart_ptr/shared_ptr.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/smart_ptr/deleter.hpp>
|
||||
#include <cassert>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//This is type of the object we want to share
|
||||
class MyType
|
||||
{};
|
||||
|
||||
typedef managed_shared_memory::segment_manager segment_manager_type;
|
||||
typedef allocator<void, segment_manager_type> void_allocator_type;
|
||||
typedef deleter<MyType, segment_manager_type> deleter_type;
|
||||
typedef shared_ptr<MyType, void_allocator_type, deleter_type> my_shared_ptr;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Destroy any previous segment with the name to be used.
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
managed_shared_memory segment(create_only, "MySharedMemory", 4096);
|
||||
|
||||
//Create a shared pointer in shared memory
|
||||
//pointing to a newly created object in the segment
|
||||
my_shared_ptr &shared_ptr_instance =
|
||||
*segment.construct<my_shared_ptr>("shared ptr")
|
||||
//Arguments to construct the shared pointer
|
||||
( segment.construct<MyType>("object to share")() //object to own
|
||||
, void_allocator_type(segment.get_segment_manager()) //allocator
|
||||
, deleter_type(segment.get_segment_manager()) //deleter
|
||||
);
|
||||
assert(shared_ptr_instance.use_count() == 1);
|
||||
|
||||
//Destroy "shared ptr". "object to share" will be automatically destroyed
|
||||
segment.destroy_ptr(&shared_ptr_instance);
|
||||
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
121
example/doc_unique_ptr.cpp
Normal file
@@ -0,0 +1,121 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007.
|
||||
// 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
//[doc_unique_ptr
|
||||
#include <boost/interprocess/managed_mapped_file.hpp>
|
||||
#include <boost/interprocess/smart_ptr/unique_ptr.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/containers/list.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <cassert>
|
||||
#include <cstdio> //std::remove
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//This is type of the object we'll allocate dynamically
|
||||
struct MyType
|
||||
{
|
||||
MyType(int number = 0)
|
||||
: number_(number)
|
||||
{}
|
||||
int number_;
|
||||
};
|
||||
|
||||
//This is the type of a unique pointer to the previous type
|
||||
//that will be built in the mapped file
|
||||
typedef managed_unique_ptr<MyType, managed_mapped_file>::type unique_ptr_type;
|
||||
|
||||
//Define containers of unique pointer. Unique pointer simplifies object management
|
||||
typedef vector
|
||||
< unique_ptr_type
|
||||
, allocator<unique_ptr_type, managed_mapped_file::segment_manager>
|
||||
> unique_ptr_vector_t;
|
||||
|
||||
typedef list
|
||||
< unique_ptr_type
|
||||
, allocator<unique_ptr_type, managed_mapped_file::segment_manager>
|
||||
> unique_ptr_list_t;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Destroy any previous file with the name to be used.
|
||||
std::remove("MyMappedFile");
|
||||
{
|
||||
managed_mapped_file file(create_only, "MyMappedFile", 65536);
|
||||
|
||||
//Construct an object in the file and
|
||||
//pass ownership to this local unique pointer
|
||||
unique_ptr_type local_unique_ptr (make_managed_unique_ptr
|
||||
(file.construct<MyType>("unique object")(), file));
|
||||
assert(local_unique_ptr.get() != 0);
|
||||
|
||||
//Reset the unique pointer. The object is automatically destroyed
|
||||
local_unique_ptr.reset();
|
||||
assert(file.find<MyType>("unique object").first == 0);
|
||||
|
||||
//Now create a vector of unique pointers
|
||||
unique_ptr_vector_t *unique_vector =
|
||||
file.construct<unique_ptr_vector_t>("unique vector")(file.get_segment_manager());
|
||||
|
||||
//Speed optimization
|
||||
unique_vector->reserve(100);
|
||||
|
||||
//Now insert all values
|
||||
for(int i = 0; i < 100; ++i){
|
||||
unique_vector->push_back(
|
||||
make_managed_unique_ptr(file.construct<MyType>(anonymous_instance)(i), file)
|
||||
);
|
||||
assert(unique_vector->back()->number_ == i);
|
||||
}
|
||||
|
||||
//Now create a list of unique pointers
|
||||
unique_ptr_list_t *unique_list =
|
||||
file.construct<unique_ptr_list_t>("unique list")(file.get_segment_manager());
|
||||
|
||||
//Pass ownership of all values to the list
|
||||
for(int i = 99; !unique_vector->empty(); --i){
|
||||
unique_list->push_front(move(unique_vector->back()));
|
||||
//The unique ptr of the vector is now empty...
|
||||
assert(unique_vector->back() == 0);
|
||||
unique_vector->pop_back();
|
||||
//...and the list has taken ownership of the value
|
||||
assert(unique_list->front() != 0);
|
||||
assert(unique_list->front()->number_ == i);
|
||||
}
|
||||
assert(unique_list->size() == 100);
|
||||
|
||||
//Now destroy the empty vector.
|
||||
file.destroy_ptr(unique_vector);
|
||||
//The mapped file is unmapped here. Objects have been flushed to disk
|
||||
}
|
||||
{
|
||||
//Reopen the mapped file and find again the list
|
||||
managed_mapped_file file(open_only, "MyMappedFile");
|
||||
unique_ptr_list_t *unique_list =
|
||||
file.find<unique_ptr_list_t>("unique list").first;
|
||||
assert(unique_list);
|
||||
assert(unique_list->size() == 100);
|
||||
|
||||
unique_ptr_list_t::const_iterator list_it = unique_list->begin();
|
||||
for(int i = 0; i < 100; ++i, ++list_it){
|
||||
assert((*list_it)->number_ == i);
|
||||
}
|
||||
|
||||
//Now destroy the list. All elements will be automatically deallocated.
|
||||
file.destroy_ptr(unique_list);
|
||||
}
|
||||
std::remove("MyMappedFile");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
31
example/doc_upgradable_mutex_shared_data.hpp
Normal file
@@ -0,0 +1,31 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
|
||||
|
||||
struct shared_data
|
||||
{
|
||||
enum { NumItems = 100 };
|
||||
enum { LineSize = 100 };
|
||||
|
||||
shared_data()
|
||||
: current_line(0)
|
||||
, end_a(false)
|
||||
, end_b(false)
|
||||
{}
|
||||
|
||||
//Mutex to protect access to the queue
|
||||
boost::interprocess::interprocess_upgradable_mutex upgradable_mutex;
|
||||
|
||||
//Items to fill
|
||||
char items[NumItems][LineSize];
|
||||
int current_line;
|
||||
bool end_a;
|
||||
bool end_b;
|
||||
};
|
||||
113
example/doc_vectorstream.cpp
Normal file
@@ -0,0 +1,113 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_vectorstream
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/containers/string.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/streams/vectorstream.hpp>
|
||||
#include <iterator>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
IntAllocator;
|
||||
typedef allocator<char, managed_shared_memory::segment_manager>
|
||||
CharAllocator;
|
||||
typedef vector<int, IntAllocator> MyVector;
|
||||
typedef basic_string
|
||||
<char, std::char_traits<char>, CharAllocator> MyString;
|
||||
typedef basic_vectorstream<MyString> MyVectorStream;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Create shared memory
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
try{
|
||||
managed_shared_memory segment(
|
||||
create_only,
|
||||
"MySharedMemory", //segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Construct shared memory vector
|
||||
MyVector *myvector =
|
||||
segment.construct<MyVector>("MyVector")
|
||||
(IntAllocator(segment.get_segment_manager()));
|
||||
|
||||
//Fill vector
|
||||
myvector->reserve(100);
|
||||
for(int i = 0; i < 100; ++i){
|
||||
myvector->push_back(i);
|
||||
}
|
||||
|
||||
//Create the vectorstream. To create the internal shared memory
|
||||
//basic_string we need to pass the shared memory allocator as
|
||||
//a constructor argument
|
||||
MyVectorStream myvectorstream(CharAllocator(segment.get_segment_manager()));
|
||||
|
||||
//Reserve the internal string
|
||||
myvectorstream.reserve(100*5);
|
||||
|
||||
//Write all vector elements as text in the internal string
|
||||
//Data will be directly written in shared memory, because
|
||||
//internal string's allocator is a shared memory allocator
|
||||
for(std::size_t i = 0, max = myvector->size(); i < max; ++i){
|
||||
myvectorstream << (*myvector)[i] << std::endl;
|
||||
}
|
||||
|
||||
//Auxiliary vector to compare original data
|
||||
MyVector *myvector2 =
|
||||
segment.construct<MyVector>("MyVector2")
|
||||
(IntAllocator(segment.get_segment_manager()));
|
||||
|
||||
//Avoid reallocations
|
||||
myvector2->reserve(100);
|
||||
|
||||
//Extract all values from the internal
|
||||
//string directly to a shared memory vector.
|
||||
std::istream_iterator<int> it(myvectorstream), itend;
|
||||
std::copy(it, itend, std::back_inserter(*myvector2));
|
||||
|
||||
//Compare vectors
|
||||
assert(std::equal(myvector->begin(), myvector->end(), myvector2->begin()));
|
||||
|
||||
//Create a copy of the internal string
|
||||
MyString stringcopy (myvectorstream.vector());
|
||||
|
||||
//Now we create a new empty shared memory string...
|
||||
MyString *mystring =
|
||||
segment.construct<MyString>("MyString")
|
||||
(CharAllocator(segment.get_segment_manager()));
|
||||
|
||||
//...and we swap vectorstream's internal string
|
||||
//with the new one: after this statement mystring
|
||||
//will be the owner of the formatted data.
|
||||
//No reallocations, no data copies
|
||||
myvectorstream.swap_vector(*mystring);
|
||||
|
||||
//Let's compare both strings
|
||||
assert(stringcopy == *mystring);
|
||||
|
||||
//Done, destroy and delete vectors and string from the segment
|
||||
segment.destroy_ptr(myvector2);
|
||||
segment.destroy_ptr(myvector);
|
||||
segment.destroy_ptr(mystring);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
74
example/doc_where_allocate.cpp
Normal file
@@ -0,0 +1,74 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
//[doc_where_allocate
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/containers/string.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
//Typedefs
|
||||
typedef allocator<char, managed_shared_memory::segment_manager>
|
||||
CharAllocator;
|
||||
typedef basic_string<char, std::char_traits<char>, CharAllocator>
|
||||
MyShmString;
|
||||
typedef allocator<MyShmString, managed_shared_memory::segment_manager>
|
||||
StringAllocator;
|
||||
typedef vector<MyShmString, StringAllocator>
|
||||
MyShmStringVector;
|
||||
|
||||
//Open shared memory
|
||||
shared_memory_object::remove("myshm");
|
||||
try{
|
||||
managed_shared_memory shm(create_only, "myshm", 10000);
|
||||
|
||||
//Create allocators
|
||||
CharAllocator charallocator (shm.get_segment_manager());
|
||||
StringAllocator stringallocator(shm.get_segment_manager());
|
||||
|
||||
//This string is in only in this process (the pointer pointing to the
|
||||
//buffer that will hold the text is not in shared memory).
|
||||
//But the buffer that will hold "this is my text" is allocated from
|
||||
//shared memory
|
||||
MyShmString mystring(charallocator);
|
||||
mystring = "this is my text";
|
||||
|
||||
//This vector is only in this process (the pointer pointing to the
|
||||
//buffer that will hold the MyShmString-s is not in shared memory).
|
||||
//But the buffer that will hold 10 MyShmString-s is allocated from
|
||||
//shared memory using StringAllocator. Since strings use a shared
|
||||
//memory allocator (CharAllocator) the 10 buffers that hold
|
||||
//"this is my text" text are also in shared memory.
|
||||
MyShmStringVector myvector(stringallocator);
|
||||
myvector.insert(myvector.begin(), 10, mystring);
|
||||
|
||||
//This vector is fully constructed in shared memory. All pointers
|
||||
//buffers are constructed in the same shared memory segment
|
||||
//This vector can be safely accessed from other processes.
|
||||
MyShmStringVector *myshmvector =
|
||||
shm.construct<MyShmStringVector>("myshmvector")(stringallocator);
|
||||
myshmvector->insert(myshmvector->begin(), 10, mystring);
|
||||
|
||||
//Destroy vector. This will free all strings that the vector contains
|
||||
shm.destroy_ptr(myshmvector);
|
||||
}
|
||||
catch(...){
|
||||
shared_memory_object::remove("myshm");
|
||||
throw;
|
||||
}
|
||||
shared_memory_object::remove("myshm");
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
48
example/doc_windows_shared_memory.cpp
Normal file
@@ -0,0 +1,48 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
#ifdef BOOST_WINDOWS
|
||||
//[doc_windows_shared_memory
|
||||
#include <boost/interprocess/windows_shared_memory.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Create a native windows shared memory object.
|
||||
windows_shared_memory shm (create_only, "shared_memory", read_write, 1000);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region(shm, read_write);
|
||||
|
||||
//Write all the memory to 1
|
||||
std::memset(region.get_address(), 1, 1000);
|
||||
|
||||
//Launch the client process and wait until finishes...
|
||||
//...
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#else //#ifdef BOOST_WINDOWS
|
||||
int main()
|
||||
{ return 0; }
|
||||
#endif//#ifdef BOOST_WINDOWS
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
55
example/doc_windows_shared_memory2.cpp
Normal file
@@ -0,0 +1,55 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2006-2007. 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/interprocess for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
#ifdef BOOST_WINDOWS
|
||||
//[doc_windows_shared_memory2
|
||||
#include <boost/interprocess/windows_shared_memory.hpp>
|
||||
#include <boost/interprocess/mapped_region.hpp>
|
||||
#include <iostream>
|
||||
#include <cstring>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
try{
|
||||
//Open already created shared memory object.
|
||||
windows_shared_memory shm(open_only, "shared_memory", read_only);
|
||||
|
||||
//Map the whole shared memory in this process
|
||||
mapped_region region (shm, read_only);
|
||||
|
||||
//Check that memory was initialized to 1
|
||||
const char *mem = static_cast<char*>(region.get_address());
|
||||
for(std::size_t i = 0; i < 1000; ++i){
|
||||
if(*mem++ != 1){
|
||||
std::cout << "Error checking memory!" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
std::cout << "Test successful!" << std::endl;
|
||||
}
|
||||
catch(interprocess_exception &ex){
|
||||
std::cout << "Unexpected exception: " << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
//]
|
||||
#else //#ifdef BOOST_WINDOWS
|
||||
int main()
|
||||
{ return 0; }
|
||||
#endif//#ifdef BOOST_WINDOWS
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
9
index.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0; URL=../../doc/html/interprocess.html">
|
||||
</head>
|
||||
<body>
|
||||
Automatic redirection failed, please go to
|
||||
<a href="../../doc/html/interprocess.html">../../doc/html/interprocess.html</a>
|
||||
</body>
|
||||
</html>
|
||||
35
proj/conceptgcc/MakeAll
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
#ifndef CC
|
||||
CC=i686-pc-cygwin-conceptg++.exe
|
||||
#endif
|
||||
|
||||
BOOST_ROOT=../../../..
|
||||
|
||||
INTERPROCESS_CPP := $(wildcard ../../src/*.cpp)
|
||||
INTERPROCESS_OBJ := $(patsubst ../../src/%.cpp, lib_%.o, $(INTERPROCESS_CPP))
|
||||
|
||||
INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
|
||||
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/conceptgcc/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
INTERPROCESSDOC_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSDOC_OUT := $(patsubst ../../example/%.cpp, ../../bin/conceptgcc/ex_%.out, $(INTERPROCESSDOC_CPP))
|
||||
|
||||
LIBDIR:= ../../../../stage/lib
|
||||
|
||||
.PHONY: createdir clean
|
||||
|
||||
all: createdir $(INTERPROCESSTEST_OUT) $(INTERPROCESSDOC_OUT)
|
||||
@cd .
|
||||
|
||||
createdir:
|
||||
@mkdir -p ../../bin/conceptgcc
|
||||
|
||||
../../bin/conceptgcc/test_%.out: ../../test/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR) -lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
../../bin/conceptgcc/ex_%.out: ../../example/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f ../../bin/conceptgcc/*
|
||||
33
proj/cygwin/MakeAll
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
ifndef CC
|
||||
CC=g++
|
||||
endif
|
||||
|
||||
BOOST_ROOT=../../../..
|
||||
|
||||
INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
|
||||
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/cygwin/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
#INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
#INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/cygwin/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
|
||||
|
||||
LIBDIR:= ../../../../stage/lib
|
||||
|
||||
.PHONY: createdir clean
|
||||
|
||||
all: createdir $(INTERPROCESSEXAMPLE_OUT) $(INTERPROCESSTEST_OUT)
|
||||
@cd .
|
||||
|
||||
createdir:
|
||||
@mkdir -p ../../bin/cygwin
|
||||
|
||||
../../bin/cygwin/test_%.out: ../../test/%.cpp
|
||||
$(CC) -g $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR) -lboost_thread-gcc-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
#../../bin/cygwin/ex_%.out: ../../example/%.cpp
|
||||
# $(CC) -g $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-gcc-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f ../../bin/cygwin/*
|
||||
32
proj/linux/MakeAll
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
ifndef CC
|
||||
CC=g++
|
||||
endif
|
||||
|
||||
BOOST_ROOT=../../../..
|
||||
BOOST_LIBS=/usr/local/lib
|
||||
|
||||
|
||||
INTERPROCESS_CPP := $(wildcard ../../test/*.cpp)
|
||||
INTERPROCESS_OUT := $(patsubst ../../test/%.cpp, ../../bin/linux/test_%.out, $(INTERPROCESS_CPP))
|
||||
|
||||
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/linux/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
|
||||
|
||||
.PHONY: createdir clean
|
||||
|
||||
all: createdir $(INTERPROCESS_OUT) $(INTERPROCESSEXAMPLE_OUT)
|
||||
@cd .
|
||||
|
||||
createdir:
|
||||
@mkdir -p ../../bin/linux
|
||||
|
||||
../../bin/linux/test_%.out: ../../test/%.cpp
|
||||
$(CC) $< -Wall -pedantic -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
|
||||
|
||||
../../bin/linux/ex_%.out: ../../example/%.cpp
|
||||
$(CC) $< -Wall -pedantic -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f ../../bin/linux/*
|
||||
35
proj/mingw/MakeAll
Normal file
@@ -0,0 +1,35 @@
|
||||
|
||||
ifndef CC
|
||||
CC=g++
|
||||
endif
|
||||
|
||||
BOOST_ROOT=../../../..
|
||||
|
||||
INTERPROCESS_CPP := $(wildcard ../../src/*.cpp)
|
||||
INTERPROCESS_OBJ := $(patsubst ../../src/%.cpp, lib_%.o, $(INTERPROCESS_CPP))
|
||||
|
||||
INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
|
||||
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/mingw/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/mingw/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
|
||||
|
||||
LIBDIR:= ../../../../stage/lib
|
||||
|
||||
.PHONY: createdir clean
|
||||
|
||||
all: createdir $(INTERPROCESSTEST_OUT) $(INTERPROCESSEXAMPLE_OUT)
|
||||
@cd .
|
||||
|
||||
createdir:
|
||||
@mkdir -p ../../bin/mingw
|
||||
|
||||
../../bin/mingw/test_%.out: ../../test/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR) -lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
../../bin/mingw/ex_%.out: ../../example/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f ../../bin/mingw/*
|
||||
33
proj/qnx/MakeAll
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
ifndef CC
|
||||
CC=g++
|
||||
endif
|
||||
|
||||
BOOST_ROOT=../../../..
|
||||
|
||||
INTERPROCESS_CPP := $(wildcard ../../src/*.cpp)
|
||||
INTERPROCESS_OBJ := $(patsubst ../../src/%.cpp, lib_%.o, $(INTERPROCESS_CPP))
|
||||
|
||||
INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
|
||||
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/qnx/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/qnx/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
|
||||
|
||||
.PHONY: createdir clean
|
||||
|
||||
all: createdir $(INTERPROCESSTEST_OUT) $(INTERPROCESSEXAMPLE_OUT)
|
||||
@cd .
|
||||
|
||||
createdir:
|
||||
@mkdir -p ../../bin/qnx
|
||||
|
||||
../../bin/qnx/test_%.out: ../../test/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
|
||||
|
||||
../../bin/qnx/ex_%.out: ../../example/%.cpp
|
||||
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o
|
||||
rm -f ../../bin/qnx/*
|
||||
73
proj/to-do.txt
Normal file
@@ -0,0 +1,73 @@
|
||||
-> Implement zero_memory flag for allocation_command
|
||||
|
||||
-> Add explanations about system libraries (-lrt) or options (-pthread) to be added
|
||||
to the command line.
|
||||
|
||||
-> The general allocation funtion can be improved with some fixed size allocation bins.
|
||||
|
||||
-> Update the documentation about memory algorithms with explanations about new functions.
|
||||
|
||||
-> Adapt error reporting to TR1 system exceptions
|
||||
|
||||
-> Improve exception messages
|
||||
|
||||
-> Movability of containers should depend on the no-throw guarantee of allocators copy constructor
|
||||
|
||||
-> Check self-assignment for vectors
|
||||
|
||||
-> Detect POD data in vector/deque to use memcpy and minimize code.
|
||||
|
||||
-> Update writing a new memory allocator explaining new functions (like alignment)
|
||||
|
||||
-> private node allocators could take the number of nodes as a runtime parameter.
|
||||
|
||||
-> Explain how to build intrusive indexes.
|
||||
|
||||
-> Add intrusive index types as available indexes.
|
||||
|
||||
-> Add maximum alignment allocation limit in PageSize bytes. Otherwise, we can't
|
||||
guarantee alignment for process-shared allocations.
|
||||
|
||||
-> Add default algorithm and index types. The user does not need to know how are
|
||||
they implemented.
|
||||
|
||||
-> Add private mapping to managed classes.
|
||||
|
||||
-> Add unique_ptr documentation.
|
||||
|
||||
-> Pass max size check in allocation to node pools
|
||||
|
||||
-> Add atomic_func explanation in docs
|
||||
|
||||
-> Once shrink to fit indexes is implemented test all memory has been deallocated
|
||||
in tests to detect leaks/implementation failures.
|
||||
|
||||
-> Improve allocate_many functions to allocate all the nodes forming a singly
|
||||
linked list of nodes.
|
||||
|
||||
-> rbtree_algorithms can be improved wrt the balanced tree. When erasing the old
|
||||
node and inserting the new (expanded or shrunk) check if the position should
|
||||
be the same. If so, avoid erase() + insert() and just update the size.
|
||||
|
||||
-> Use in-place expansion capabilities to shrink_to_fit and reserve functions
|
||||
from iunordered_index.
|
||||
|
||||
-> Refactor pool allocators to extract common operations
|
||||
|
||||
-> Shrink in place interface is not adequate for with objects that don't have
|
||||
a trivial destructor: how many destructors can we call before deallocating
|
||||
the memory? Options:
|
||||
1. Call destructors in the low-level shrink function (but this might lead to
|
||||
deadlock)
|
||||
2. Offer a function to know how much can we shrink (but destructor + shrinking
|
||||
would not be atomic so we must guarantee that shrinking will succeed).
|
||||
|
||||
-> Optimize copy_n with std::copy in vector. Revise other functions to improve optimizations
|
||||
|
||||
-> Keep an eye on container iterator constness issue to bring Interprocess containers up-to-date.
|
||||
|
||||
-> change unique_ptr to avoid using compressed_pair
|
||||
|
||||
-> Improve unique_ptr test to test move assignment and other goodies like assigment from null
|
||||
|
||||
-> barrier_test fails on MacOS X on PowerPC.
|
||||
847
proj/vc7ide/Interprocess.sln
Normal file
@@ -0,0 +1,847 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 8.00
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionA", "doc_named_conditionA.vcproj", "{58EB1CB3-1354-364E-12F2-154356612054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionB", "doc_named_conditionB.vcproj", "{58181CB3-5134-634E-12F2-155435622054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contA", "doc_contA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contB", "doc_contB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory2", "doc_shared_memory2.vcproj", "{58CE1D83-F31E-4FD7-6132-8A79F6307B61}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping2", "doc_file_mapping2.vcproj", "{5CE19883-F413-7EFD-6342-B79639F7B611}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_test", "windows_shared_memory_test.vcproj", "{E385C28C-0691-4FA7-F48E-935BA0D06310}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "windows_shared_memory_mapping_test", "windows_shared_memory_mapping_test.vcproj", "{518CE8C3-6512-FA75-46EF-B917A3A116D1}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_windows_shared_memory_test", "managed_windows_shared_memory.vcproj", "{5D18CE83-1926-7AE4-FE94-B606D9B23131}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_pool_test", "adaptive_pool_test.vcproj", "{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_adaptive_pool_test", "cached_adaptive_pool_test.vcproj", "{5188E3CE-2964-F43E-FB87-B037AC692D59}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_adaptive_pool_test", "private_adaptive_pool_test.vcproj", "{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_allocator", "doc_allocator.vcproj", "{581B1C83-4E12-9526-020F-012482540054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_node_allocator", "doc_node_allocator.vcproj", "{51B17C83-E172-5396-0FA2-825472008554}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_node_allocator", "doc_private_node_allocator.vcproj", "{2B75C833-17D2-4956-A23F-820854254175}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_node_allocator", "doc_cached_node_allocator.vcproj", "{283AD375-7D12-5866-23BF-854308651275}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_adaptive_pool", "doc_adaptive_pool.vcproj", "{57C832B1-17D2-9537-FA12-827220448554}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cached_adaptive_pool", "doc_cached_adaptive_pool.vcproj", "{536C8251-7E12-9537-A1E2-822073258554}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_private_adaptive_pool", "doc_private_adaptive_pool.vcproj", "{83258CB1-127E-9375-F872-8324A1054454}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_raw_allocation", "doc_managed_raw_allocation.vcproj", "{5198EFC3-2731-F34E-4FD8-1859AC94F761}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_aligned_allocation", "doc_managed_aligned_allocation.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory", "doc_windows_shared_memory.vcproj", "{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_windows_shared_memory2", "doc_windows_shared_memory2.vcproj", "{5E1D6C83-31DE-4F6F-6132-87A9FB663041}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adaptive_node_pool_test", "adaptive_node_pool_test.vcproj", "{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_pool_test", "node_pool_test.vcproj", "{8A519DC3-6092-A4FE-F748-BA91328D6522}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "deque_test", "deque_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "barrier_test", "barrier_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bufferstream_test", "bufferstream_test.vcproj", "{58C183CE-6203-FE12-A237-BA8976695960}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cached_node_allocator_test", "cached_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "private_node_allocator_test", "private_node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792620}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "node_allocator_test", "node_allocator_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792622}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_mutex_test", "named_mutex_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792625}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_recursive_mutex_test", "named_recursive_mutex_test.vcproj", "{5C83CE18-4F48-A7FE-6092-B7920AD3A624}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_semaphore_test", "named_semaphore_test.vcproj", "{58CCE283-1609-48FE-A4F7-BA0D3A793523}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_heap_memory", "doc_managed_heap_memory.vcproj", "{58CCE183-6092-48FE-A4FC-BA0D3A792647}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "allocexcept_test", "allocexcept_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "condition_test", "condition_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "data_test", "data_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_bufferstream.vcproj", "{58C1B183-9026-4E12-00F2-001200540054}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_intrusive", "doc_intrusive.vcproj", "{5E18CC83-6092-48FE-A677-B832A0D3A650}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageA", "doc_ipc_messageA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792649}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_ipc_messageB", "doc_ipc_messageB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792648}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_mapped_file", "doc_managed_mapped_file.vcproj", "{58CCE183-5091-48FE-A4FC-BA0D3A792446}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocA", "doc_named_allocA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792645}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_allocB", "doc_named_allocB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792644}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_offset_ptr", "doc_offset_ptr.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792643}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_scoped_ptr", "doc_scoped_ptr.vcproj", "{58CC8E13-0962-8F4E-77A6-BD3A6832A042}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_vectorstream", "doc_vectorstream.vcproj", "{58C1B183-9260-4E8F-F200-000000000041}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_where_allocate", "doc_where_allocate.vcproj", "{58CCE183-6092-48FE-A677-BA0D3A832640}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "file_mapping_test", "file_mapping_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792638}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792637}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intrusive_ptr_test", "intrusive_ptr_test.vcproj", "{5821C383-6092-12FE-A877-BA0D33467633}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "list_test", "list_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792632}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_mapped_file_test", "managed_mapped_file_test.vcproj", "{5CCE1883-0926-F7A4-8FE4-BA0606D92331}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mapped_file_test", "mapped_file_test.vcproj", "{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "memory_algorithm_test", "memory_algorithm_test.vcproj", "{58E18CC3-6092-8F4E-A3E7-A792230D3629}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "message_queue_test", "message_queue.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792628}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mutex_test", "mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A27}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "null_index_test", "null_index_test.vcproj", "{0000058C-0000-0000-0000-000000000021}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "recursive_mutex_test", "recursive_mutex_test.vcproj", "{83581CCE-487E-3292-A4E7-BA07926D3A14}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore_test.vcproj", "{5CE28C83-48FE-1676-4FA7-B50D3A76A013}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_multiple_allocation", "doc_managed_multiple_allocation.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_allocation_command", "doc_managed_allocation_command.vcproj", "{5189DEA3-3261-F33E-47ED-83BC69F66061}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_construction_info", "doc_managed_construction_info.vcproj", "{5C82D1D3-3861-3AF1-03EF-89AED4716761}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr_explicit", "doc_shared_ptr_explicit.vcproj", "{4E887AC3-F8EA-6923-A744-C264A398C913}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_unique_ptr", "doc_unique_ptr.vcproj", "{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_ptr", "doc_shared_ptr.vcproj", "{51CE89A3-6092-F4EA-48A7-B4B9AC326093}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "managed_shared_memory_test", "managed_shared_memory.vcproj", "{58DF28E3-0926-F47A-E28A-B03A4D619631}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_managed_grow", "doc_managed_grow.vcproj", "{818C43EE-3561-F3AE-4FD7-8A2076E76A31}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "offset_ptr_test", "offset_ptr_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfiguration) = preSolution
|
||||
Debug = Debug
|
||||
Release = Release
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectDependencies) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfiguration) = postSolution
|
||||
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
|
||||
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
|
||||
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
|
||||
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
|
||||
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
|
||||
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
|
||||
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32
|
||||
{5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32
|
||||
{5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
|
||||
{5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
|
||||
{5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
|
||||
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
|
||||
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
|
||||
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
|
||||
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
|
||||
{58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
|
||||
{58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
|
||||
{58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
|
||||
{58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
|
||||
{58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
|
||||
{58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
|
||||
{58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
|
||||
{58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
|
||||
{58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
|
||||
{58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
|
||||
{58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
|
||||
{58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
|
||||
{5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
|
||||
{5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
|
||||
{5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
|
||||
{58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
|
||||
{58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
|
||||
{58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
|
||||
{58EB1CB3-1354-364E-12F2-154356612054}.Debug.ActiveCfg = Debug|Win32
|
||||
{58EB1CB3-1354-364E-12F2-154356612054}.Debug.Build.0 = Debug|Win32
|
||||
{58EB1CB3-1354-364E-12F2-154356612054}.Release.ActiveCfg = Release|Win32
|
||||
{58EB1CB3-1354-364E-12F2-154356612054}.Release.Build.0 = Release|Win32
|
||||
{58181CB3-5134-634E-12F2-155435622054}.Debug.ActiveCfg = Debug|Win32
|
||||
{58181CB3-5134-634E-12F2-155435622054}.Debug.Build.0 = Debug|Win32
|
||||
{58181CB3-5134-634E-12F2-155435622054}.Release.ActiveCfg = Release|Win32
|
||||
{58181CB3-5134-634E-12F2-155435622054}.Release.Build.0 = Release|Win32
|
||||
{5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
|
||||
{5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
|
||||
{5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
|
||||
{58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
|
||||
{58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
|
||||
{58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
|
||||
{58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
|
||||
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
|
||||
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
|
||||
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
|
||||
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
|
||||
{5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
|
||||
{5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
|
||||
{5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
|
||||
{5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
|
||||
{5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
|
||||
{5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
|
||||
{51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
|
||||
{51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
|
||||
{51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
|
||||
{51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
|
||||
{5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
|
||||
{5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
|
||||
{5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.Build.0 = Release|Win32
|
||||
{571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32
|
||||
{571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32
|
||||
{571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32
|
||||
{571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
|
||||
{58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
|
||||
{58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
|
||||
{58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
|
||||
{588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
|
||||
{588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
|
||||
{588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
|
||||
{588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
|
||||
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
|
||||
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
|
||||
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
|
||||
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
|
||||
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
|
||||
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
|
||||
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
|
||||
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
|
||||
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
|
||||
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32
|
||||
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32
|
||||
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32
|
||||
{58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Debug.Build.0 = Debug|Win32
|
||||
{58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.ActiveCfg = Release|Win32
|
||||
{58CE1D83-F31E-4FD7-6132-8A79F6307B61}.Release.Build.0 = Release|Win32
|
||||
{5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE19883-F413-7EFD-6342-B79639F7B611}.Debug.Build.0 = Debug|Win32
|
||||
{5CE19883-F413-7EFD-6342-B79639F7B611}.Release.ActiveCfg = Release|Win32
|
||||
{5CE19883-F413-7EFD-6342-B79639F7B611}.Release.Build.0 = Release|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
|
||||
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
|
||||
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
|
||||
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32
|
||||
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.Build.0 = Release|Win32
|
||||
{E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.ActiveCfg = Debug|Win32
|
||||
{E385C28C-0691-4FA7-F48E-935BA0D06310}.Debug.Build.0 = Debug|Win32
|
||||
{E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.ActiveCfg = Release|Win32
|
||||
{E385C28C-0691-4FA7-F48E-935BA0D06310}.Release.Build.0 = Release|Win32
|
||||
{518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.ActiveCfg = Debug|Win32
|
||||
{518CE8C3-6512-FA75-46EF-B917A3A116D1}.Debug.Build.0 = Debug|Win32
|
||||
{518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.ActiveCfg = Release|Win32
|
||||
{518CE8C3-6512-FA75-46EF-B917A3A116D1}.Release.Build.0 = Release|Win32
|
||||
{5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.ActiveCfg = Debug|Win32
|
||||
{5D18CE83-1926-7AE4-FE94-B606D9B23131}.Debug.Build.0 = Debug|Win32
|
||||
{5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.ActiveCfg = Release|Win32
|
||||
{5D18CE83-1926-7AE4-FE94-B606D9B23131}.Release.Build.0 = Release|Win32
|
||||
{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Debug.Build.0 = Debug|Win32
|
||||
{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.ActiveCfg = Release|Win32
|
||||
{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}.Release.Build.0 = Release|Win32
|
||||
{5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.ActiveCfg = Debug|Win32
|
||||
{5188E3CE-2964-F43E-FB87-B037AC692D59}.Debug.Build.0 = Debug|Win32
|
||||
{5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.ActiveCfg = Release|Win32
|
||||
{5188E3CE-2964-F43E-FB87-B037AC692D59}.Release.Build.0 = Release|Win32
|
||||
{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Debug.Build.0 = Debug|Win32
|
||||
{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.ActiveCfg = Release|Win32
|
||||
{5CE14C83-4962-8F5E-4FA7-B0D3A7B93635}.Release.Build.0 = Release|Win32
|
||||
{581B1C83-4E12-9526-020F-012482540054}.Debug.ActiveCfg = Debug|Win32
|
||||
{581B1C83-4E12-9526-020F-012482540054}.Debug.Build.0 = Debug|Win32
|
||||
{581B1C83-4E12-9526-020F-012482540054}.Release.ActiveCfg = Release|Win32
|
||||
{581B1C83-4E12-9526-020F-012482540054}.Release.Build.0 = Release|Win32
|
||||
{51B17C83-E172-5396-0FA2-825472008554}.Debug.ActiveCfg = Debug|Win32
|
||||
{51B17C83-E172-5396-0FA2-825472008554}.Debug.Build.0 = Debug|Win32
|
||||
{51B17C83-E172-5396-0FA2-825472008554}.Release.ActiveCfg = Release|Win32
|
||||
{51B17C83-E172-5396-0FA2-825472008554}.Release.Build.0 = Release|Win32
|
||||
{2B75C833-17D2-4956-A23F-820854254175}.Debug.ActiveCfg = Debug|Win32
|
||||
{2B75C833-17D2-4956-A23F-820854254175}.Debug.Build.0 = Debug|Win32
|
||||
{2B75C833-17D2-4956-A23F-820854254175}.Release.ActiveCfg = Release|Win32
|
||||
{2B75C833-17D2-4956-A23F-820854254175}.Release.Build.0 = Release|Win32
|
||||
{283AD375-7D12-5866-23BF-854308651275}.Debug.ActiveCfg = Debug|Win32
|
||||
{283AD375-7D12-5866-23BF-854308651275}.Debug.Build.0 = Debug|Win32
|
||||
{283AD375-7D12-5866-23BF-854308651275}.Release.ActiveCfg = Release|Win32
|
||||
{283AD375-7D12-5866-23BF-854308651275}.Release.Build.0 = Release|Win32
|
||||
{57C832B1-17D2-9537-FA12-827220448554}.Debug.ActiveCfg = Debug|Win32
|
||||
{57C832B1-17D2-9537-FA12-827220448554}.Debug.Build.0 = Debug|Win32
|
||||
{57C832B1-17D2-9537-FA12-827220448554}.Release.ActiveCfg = Release|Win32
|
||||
{57C832B1-17D2-9537-FA12-827220448554}.Release.Build.0 = Release|Win32
|
||||
{536C8251-7E12-9537-A1E2-822073258554}.Debug.ActiveCfg = Debug|Win32
|
||||
{536C8251-7E12-9537-A1E2-822073258554}.Debug.Build.0 = Debug|Win32
|
||||
{536C8251-7E12-9537-A1E2-822073258554}.Release.ActiveCfg = Release|Win32
|
||||
{536C8251-7E12-9537-A1E2-822073258554}.Release.Build.0 = Release|Win32
|
||||
{83258CB1-127E-9375-F872-8324A1054454}.Debug.ActiveCfg = Debug|Win32
|
||||
{83258CB1-127E-9375-F872-8324A1054454}.Debug.Build.0 = Debug|Win32
|
||||
{83258CB1-127E-9375-F872-8324A1054454}.Release.ActiveCfg = Release|Win32
|
||||
{83258CB1-127E-9375-F872-8324A1054454}.Release.Build.0 = Release|Win32
|
||||
{5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.ActiveCfg = Debug|Win32
|
||||
{5198EFC3-2731-F34E-4FD8-1859AC94F761}.Debug.Build.0 = Debug|Win32
|
||||
{5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.ActiveCfg = Release|Win32
|
||||
{5198EFC3-2731-F34E-4FD8-1859AC94F761}.Release.Build.0 = Release|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
|
||||
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
|
||||
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.ActiveCfg = Debug|Win32
|
||||
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.Build.0 = Debug|Win32
|
||||
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.ActiveCfg = Release|Win32
|
||||
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.Build.0 = Release|Win32
|
||||
{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.ActiveCfg = Debug|Win32
|
||||
{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Debug.Build.0 = Debug|Win32
|
||||
{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.ActiveCfg = Release|Win32
|
||||
{5E17C9C3-1362-2E1E-C84F-8A76B6739F21}.Release.Build.0 = Release|Win32
|
||||
{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.ActiveCfg = Debug|Win32
|
||||
{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Debug.Build.0 = Debug|Win32
|
||||
{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.ActiveCfg = Release|Win32
|
||||
{5E1D6C83-31DE-4F6F-6132-87A9FB663041}.Release.Build.0 = Release|Win32
|
||||
{CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.ActiveCfg = Debug|Win32
|
||||
{CD57C283-1862-42FE-BF87-B96D3A2A7912}.Debug.Build.0 = Debug|Win32
|
||||
{CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.ActiveCfg = Release|Win32
|
||||
{CD57C283-1862-42FE-BF87-B96D3A2A7912}.Release.Build.0 = Release|Win32
|
||||
{8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.ActiveCfg = Debug|Win32
|
||||
{8A519DC3-6092-A4FE-F748-BA91328D6522}.Debug.Build.0 = Debug|Win32
|
||||
{8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.ActiveCfg = Release|Win32
|
||||
{8A519DC3-6092-A4FE-F748-BA91328D6522}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792655}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792655}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792661}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792661}.Release.Build.0 = Release|Win32
|
||||
{58C183CE-6203-FE12-A237-BA8976695960}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C183CE-6203-FE12-A237-BA8976695960}.Debug.Build.0 = Debug|Win32
|
||||
{58C183CE-6203-FE12-A237-BA8976695960}.Release.ActiveCfg = Release|Win32
|
||||
{58C183CE-6203-FE12-A237-BA8976695960}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792659}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792659}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792620}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792620}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792622}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792622}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792625}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792625}.Release.Build.0 = Release|Win32
|
||||
{5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Debug.Build.0 = Debug|Win32
|
||||
{5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.ActiveCfg = Release|Win32
|
||||
{5C83CE18-4F48-A7FE-6092-B7920AD3A624}.Release.Build.0 = Release|Win32
|
||||
{58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE283-1609-48FE-A4F7-BA0D3A793523}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE283-1609-48FE-A4F7-BA0D3A793523}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4FC-BA0D3A792647}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4FC-BA0D3A792647}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792662}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792662}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792658}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792658}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792657}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792657}.Release.Build.0 = Release|Win32
|
||||
{58C1B183-9026-4E12-00F2-001200540054}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
|
||||
{58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
|
||||
{58C1B183-9026-4E12-00F2-001200540054}.Release.Build.0 = Release|Win32
|
||||
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
|
||||
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.Build.0 = Debug|Win32
|
||||
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.ActiveCfg = Release|Win32
|
||||
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792649}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792649}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792648}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792648}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-5091-48FE-A4FC-BA0D3A792446}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-5091-48FE-A4FC-BA0D3A792446}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792645}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792645}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792644}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792644}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792643}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792643}.Release.Build.0 = Release|Win32
|
||||
{58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Debug.Build.0 = Debug|Win32
|
||||
{58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.ActiveCfg = Release|Win32
|
||||
{58CC8E13-0962-8F4E-77A6-BD3A6832A042}.Release.Build.0 = Release|Win32
|
||||
{58C1B183-9260-4E8F-F200-000000000041}.Debug.ActiveCfg = Debug|Win32
|
||||
{58C1B183-9260-4E8F-F200-000000000041}.Debug.Build.0 = Debug|Win32
|
||||
{58C1B183-9260-4E8F-F200-000000000041}.Release.ActiveCfg = Release|Win32
|
||||
{58C1B183-9260-4E8F-F200-000000000041}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A677-BA0D3A832640}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A677-BA0D3A832640}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A677-BA0D3A832640}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792638}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792638}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
|
||||
{5821C383-6092-12FE-A877-BA0D33467633}.Debug.ActiveCfg = Debug|Win32
|
||||
{5821C383-6092-12FE-A877-BA0D33467633}.Debug.Build.0 = Debug|Win32
|
||||
{5821C383-6092-12FE-A877-BA0D33467633}.Release.ActiveCfg = Release|Win32
|
||||
{5821C383-6092-12FE-A877-BA0D33467633}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792632}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792632}.Release.Build.0 = Release|Win32
|
||||
{5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Debug.Build.0 = Debug|Win32
|
||||
{5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.ActiveCfg = Release|Win32
|
||||
{5CCE1883-0926-F7A4-8FE4-BA0606D92331}.Release.Build.0 = Release|Win32
|
||||
{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Debug.Build.0 = Debug|Win32
|
||||
{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.ActiveCfg = Release|Win32
|
||||
{5C6D9CE1-2609-F7A4-8FE4-BA0883602330}.Release.Build.0 = Release|Win32
|
||||
{58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.ActiveCfg = Debug|Win32
|
||||
{58E18CC3-6092-8F4E-A3E7-A792230D3629}.Debug.Build.0 = Debug|Win32
|
||||
{58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.ActiveCfg = Release|Win32
|
||||
{58E18CC3-6092-8F4E-A3E7-A792230D3629}.Release.Build.0 = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.ActiveCfg = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792628}.Debug.Build.0 = Debug|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.ActiveCfg = Release|Win32
|
||||
{58CCE183-6092-48FE-A4F7-BA0D3A792628}.Release.Build.0 = Release|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.ActiveCfg = Debug|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A27}.Debug.Build.0 = Debug|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.ActiveCfg = Release|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A27}.Release.Build.0 = Release|Win32
|
||||
{0000058C-0000-0000-0000-000000000021}.Debug.ActiveCfg = Debug|Win32
|
||||
{0000058C-0000-0000-0000-000000000021}.Debug.Build.0 = Debug|Win32
|
||||
{0000058C-0000-0000-0000-000000000021}.Release.ActiveCfg = Release|Win32
|
||||
{0000058C-0000-0000-0000-000000000021}.Release.Build.0 = Release|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.ActiveCfg = Debug|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A14}.Debug.Build.0 = Debug|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.ActiveCfg = Release|Win32
|
||||
{83581CCE-487E-3292-A4E7-BA07926D3A14}.Release.Build.0 = Release|Win32
|
||||
{5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Debug.Build.0 = Debug|Win32
|
||||
{5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.ActiveCfg = Release|Win32
|
||||
{5CE28C83-48FE-1676-4FA7-B50D3A76A013}.Release.Build.0 = Release|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
|
||||
{5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.ActiveCfg = Debug|Win32
|
||||
{5189DEA3-3261-F33E-47ED-83BC69F66061}.Debug.Build.0 = Debug|Win32
|
||||
{5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.ActiveCfg = Release|Win32
|
||||
{5189DEA3-3261-F33E-47ED-83BC69F66061}.Release.Build.0 = Release|Win32
|
||||
{5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.ActiveCfg = Debug|Win32
|
||||
{5C82D1D3-3861-3AF1-03EF-89AED4716761}.Debug.Build.0 = Debug|Win32
|
||||
{5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.ActiveCfg = Release|Win32
|
||||
{5C82D1D3-3861-3AF1-03EF-89AED4716761}.Release.Build.0 = Release|Win32
|
||||
{4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.ActiveCfg = Debug|Win32
|
||||
{4E887AC3-F8EA-6923-A744-C264A398C913}.Debug.Build.0 = Debug|Win32
|
||||
{4E887AC3-F8EA-6923-A744-C264A398C913}.Release.ActiveCfg = Release|Win32
|
||||
{4E887AC3-F8EA-6923-A744-C264A398C913}.Release.Build.0 = Release|Win32
|
||||
{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.ActiveCfg = Debug|Win32
|
||||
{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Debug.Build.0 = Debug|Win32
|
||||
{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.ActiveCfg = Release|Win32
|
||||
{589C2EB3-8A57-1862-F4EA-A6B14C7329A3}.Release.Build.0 = Release|Win32
|
||||
{51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.ActiveCfg = Debug|Win32
|
||||
{51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Debug.Build.0 = Debug|Win32
|
||||
{51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.ActiveCfg = Release|Win32
|
||||
{51CE89A3-6092-F4EA-48A7-B4B9AC326093}.Release.Build.0 = Release|Win32
|
||||
{58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.ActiveCfg = Debug|Win32
|
||||
{58DF28E3-0926-F47A-E28A-B03A4D619631}.Debug.Build.0 = Debug|Win32
|
||||
{58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.ActiveCfg = Release|Win32
|
||||
{58DF28E3-0926-F47A-E28A-B03A4D619631}.Release.Build.0 = Release|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.ActiveCfg = Debug|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Debug.Build.0 = Debug|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.ActiveCfg = Release|Win32
|
||||
{818C43EE-3561-F3AE-4FD7-8A2076E76A31}.Release.Build.0 = Release|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
|
||||
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityAddIns) = postSolution
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
138
proj/vc7ide/adaptive_node_pool_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="adaptive_node_pool_test"
|
||||
ProjectGUID="{CD57C283-1862-42FE-BF87-B96D3A2A7912}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/adaptive_node_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/adaptive_node_pool_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/adaptive_node_pool_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/adaptive_node_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/adaptive_node_pool_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{34957FC1-7BC5-1646-05A6-27542AA2A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\adaptive_node_pool_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93A78280-B78D-4B31-7E8B-6255ACE1E5FB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/adaptive_pool_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="adaptive_pool_test"
|
||||
ProjectGUID="{58CE1D84-1962-4FE9-BA0D-A4F7973A4652}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/adaptive_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/adaptive_pool_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/adaptive_pool_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/adaptive_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/adaptive_pool_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4995FE71-7AD5-A596-4763-2A3752A27EFF}">
|
||||
<File
|
||||
RelativePath="..\..\test\adaptive_pool_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{3C387380-C89D-C074-83EB-E57B622EBFFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/allocexcept_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="allocexcept_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792662}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/allocexcept_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/allocexcept_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/allocexcept_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/allocexcept_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/allocexcept_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\allocexcept_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/barrier_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="barrier_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792661}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/shared_barrier_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_barrier_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/shared_barrier_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/shared_barrier_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_barrier_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\barrier_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/bufferstream_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="bufferstream_test"
|
||||
ProjectGUID="{58C183CE-6203-FE12-A237-BA8976695960}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/bufferstream_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/bufferstream_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/bufferstream_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/bufferstream_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/bufferstream_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{C74F713F-CA5A-4736-A660-22D752A2A3FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\bufferstream_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{98095-8D393-404b-8B8E-625EF5BBF2EB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/cached_adaptive_pool_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="cached_adaptive_pool_test"
|
||||
ProjectGUID="{5188E3CE-2964-F43E-FB87-B037AC692D59}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/cached_adaptive_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/cached_adaptive_pool_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/cached_adaptive_pool_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/cached_adaptive_pool_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/cached_adaptive_pool_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{473FC3E1-7AD5-4763-06A6-2D5FBE752A3F}">
|
||||
<File
|
||||
RelativePath="..\..\test\cached_adaptive_pool_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93538890-9A8D-4C04-89EB-622A2F52DBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/cached_node_allocator_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="cached_node_allocator_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792659}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/cached_node_allocator_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/cached_node_allocator_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/cached_node_allocator_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/cached_node_allocator_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/cached_node_allocator_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\cached_node_allocator_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/condition_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="condition_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792658}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/shared_condition_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_condition_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/shared_condition_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/shared_condition_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_condition_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\condition_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/data_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="data_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792657}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/data_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/data_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/data_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/data_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/data_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\data_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/deque_test.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="deque_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792655}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/deque_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/deque_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/deque_test.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/deque_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/deque_test.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\deque_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_adaptive_pool.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_adaptive_pool"
|
||||
ProjectGUID="{57C832B1-17D2-9537-FA12-827220448554}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_adaptive_pool"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_adaptive_pool_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_adaptive_pool.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_adaptive_pool"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_adaptive_pool.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{42F72BE1-87DA-63F7-3A56-A76775CFBEA2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_adaptive_pool.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{7D15CE80-A945-7643-19A6-6BB4B2F13597}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_allocator.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_allocator"
|
||||
ProjectGUID="{581B1C83-4E12-9526-020F-012482540054}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_allocator"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_allocator_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_allocator.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_allocator"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_allocator.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{432EB2F1-4637-C57A-A526-A20668f7FFA2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_allocator.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{7A713380-C945-4764-A066-625BE5EABBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_anonymous_conditionA.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_anonymous_conditionA"
|
||||
ProjectGUID="{5C1B8183-0296-4F83-1F22-001005220544}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_anonymous_conditionA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_conditionA_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_anonymous_conditionA.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_anonymous_conditionA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_conditionA.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4BE2BEF1-C8A9-53BC-1A02-952FFA2D75A2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_anonymous_conditionA.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{913380FA-5C7A-7644-A568-62F585B5FBCB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_anonymous_conditionB.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_anonymous_conditionB"
|
||||
ProjectGUID="{58C1FE83-2906-E643-2F12-024410052254}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_anonymous_conditionB"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_conditionB_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_anonymous_conditionB.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_anonymous_conditionB"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_conditionB.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4B2EF711-14CA-5347-F025-7F75AF2D22A2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_anonymous_conditionB.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{92431970-57CA-4ED4-85A6-624258635BFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_anonymous_mutexA.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_anonymous_mutexA"
|
||||
ProjectGUID="{58C1B183-9026-4E63-12F2-005412200054}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_anonymous_mutexA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_mutexA_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_anonymous_mutexA.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_anonymous_mutexA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_mutexA.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4BE712F1-C98A-4537-12A0-72D752FFA2A2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_anonymous_mutexA.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{91243380-C57A-4764-A856-625FEF585BFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_anonymous_mutexB.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_anonymous_mutexB"
|
||||
ProjectGUID="{58C1B183-9026-4E63-12F2-005202441254}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_anonymous_mutexB"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_mutexB_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_anonymous_mutexB.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_anonymous_mutexB"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_mutexB.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4B712EF1-98CA-4537-A012-72D2FF75A2A2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_anonymous_mutexB.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{91243970-C57A-4624-A856-625142585BFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
138
proj/vc7ide/doc_anonymous_semaphoreA.vcproj
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="doc_anonymous_semaphoreA"
|
||||
ProjectGUID="{5CB81183-29FB-F843-24FF-022050100544}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/doc_anonymous_semaphoreA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_semaphoreA_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/doc_anonymous_semaphoreA.pdb"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
FixedBaseAddress="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/doc_anonymous_semaphoreA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
TreatWChar_tAsBuiltInType="TRUE"
|
||||
ForceConformanceInForLoopScope="FALSE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="4"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/doc_anonymous_semaphoreA.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCWebDeploymentTool"/>
|
||||
<Tool
|
||||
Name="VCManagedWrapperGeneratorTool"/>
|
||||
<Tool
|
||||
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4BEFCAB1-8AC0-3B5C-AF1B-9522D75AFFA2}">
|
||||
<File
|
||||
RelativePath="..\..\example\doc_anonymous_semaphoreA.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{918033FA-7644-7A5C-AFB8-62FB5FA585CB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||