mirror of
https://github.com/boostorg/interprocess.git
synced 2026-01-19 04:12:13 +00:00
Changes introduced by the new intrusive version.
[SVN r39555]
This commit is contained in:
@@ -26,6 +26,8 @@ doxygen autodoc
|
||||
<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 ;
|
||||
@@ -36,7 +38,9 @@ boostbook standalone
|
||||
:
|
||||
<xsl:param>boost.root=../../../..
|
||||
<xsl:param>boost.libraries=../../../../libs/libraries.htm
|
||||
<xsl:param>generate.section.toc.level=3
|
||||
<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
|
||||
;
|
||||
|
||||
1996
doc/interprocess.qbk
1996
doc/interprocess.qbk
File diff suppressed because it is too large
Load Diff
@@ -1,65 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004. 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/managed_shared_memory.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
|
||||
//Create managed shared memory
|
||||
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);
|
||||
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
|
||||
// . . .
|
||||
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
|
||||
//Named allocate capable shared memory allocator
|
||||
managed_shared_memory segment(open_only, "MySharedMemory");
|
||||
|
||||
managed_shared_memory::handle_t handle = 0;
|
||||
(void)handle;
|
||||
|
||||
//Wait handle msg from 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
|
||||
}
|
||||
|
||||
segment.deallocate(shptr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <cassert>//assert
|
||||
#include <cstring>//std::memset
|
||||
#include <new> //std::nothrow
|
||||
#include <vector> //std::vector
|
||||
|
||||
int main()
|
||||
{
|
||||
@@ -23,24 +24,33 @@ int main()
|
||||
|
||||
try{
|
||||
managed_shared_memory managed_shm(create_only, "MyManagedShm", 65536);
|
||||
std::size_t received_size;
|
||||
//Allocate 16 elements of 100 bytes in a single call. Non-throwing version.
|
||||
multiallocation_iterator beg_it = managed_shm.allocate_many(100, 16, 16, received_size, std::nothrow);
|
||||
|
||||
//To check for an error, we can use a boolean expresssion
|
||||
//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; )
|
||||
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
|
||||
for(multiallocation_iterator it = beg_it, end_it; it != end_it;)
|
||||
managed_shm.deallocate(*it++);
|
||||
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];
|
||||
@@ -51,8 +61,11 @@ int main()
|
||||
|
||||
//Iterate each allocated buffer and deallocate
|
||||
//The "end" condition can be also checked with operator!
|
||||
for(multiallocation_iterator it = beg_it; it;)
|
||||
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");
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (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/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 ()
|
||||
{
|
||||
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(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;
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (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/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 ()
|
||||
{
|
||||
try{
|
||||
//Erase previous shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
|
||||
//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 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("MySharedMemory");
|
||||
std::cout << ex.what() << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Erase shared memory
|
||||
shared_memory_object::remove("shared_memory");
|
||||
return 0;
|
||||
}
|
||||
@@ -31,7 +31,7 @@ int main ()
|
||||
try{
|
||||
managed_shared_memory segment(
|
||||
create_only,
|
||||
"MySharedMemory",//segment name
|
||||
"MySharedMemory", //segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Create linked list with 10 nodes in shared memory
|
||||
|
||||
120
example/doc_shared_ptr.cpp
Normal file
120
example/doc_shared_ptr.cpp
Normal file
@@ -0,0 +1,120 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (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>
|
||||
|
||||
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
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>
|
||||
120
example/doc_unique_ptr.cpp
Normal file
120
example/doc_unique_ptr.cpp
Normal file
@@ -0,0 +1,120 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (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>
|
||||
|
||||
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>
|
||||
@@ -35,7 +35,7 @@ int main ()
|
||||
try{
|
||||
managed_shared_memory segment(
|
||||
create_only,
|
||||
"MySharedMemory",//segment name
|
||||
"MySharedMemory", //segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Construct shared memory vector
|
||||
|
||||
@@ -1,96 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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/managed_shared_memory.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
int main ()
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef std::pair<double, int> MyType;
|
||||
|
||||
//Named allocate capable shared mem allocator
|
||||
//Create shared memory
|
||||
shared_memory_object::remove("MySharedMemory");
|
||||
managed_shared_memory segment
|
||||
(create_only,
|
||||
"MySharedMemory",//segment name
|
||||
65536); //segment size in bytes
|
||||
|
||||
//Create an object of MyType initialized to {0, 0}
|
||||
segment.construct<MyType>
|
||||
("MyType instance") /*name of the object*/
|
||||
(0 /*ctor first argument*/,
|
||||
0 /*ctor second argument*/);
|
||||
|
||||
//Create an array of 10 elements of MyType initialized to {0, 0}
|
||||
segment.construct<MyType>
|
||||
("MyType array") /*name of the object*/
|
||||
[10] /*number of elements*/
|
||||
(0 /*ctor first argument*/,
|
||||
0 /*ctor second argument*/);
|
||||
|
||||
|
||||
//Let's simulate other process
|
||||
{
|
||||
using namespace boost::interprocess;
|
||||
typedef std::pair<double, int> MyType;
|
||||
|
||||
//Named allocate capable shared mem allocator
|
||||
//Create shared memory
|
||||
managed_shared_memory segment
|
||||
(open_only, "MySharedMemory"); //segment name
|
||||
|
||||
//Find the array and object
|
||||
std::pair<MyType*, std::size_t> res;
|
||||
res = segment.find<MyType> ("MyType array");
|
||||
|
||||
std::size_t array_len = res.second;
|
||||
//Length should be 1
|
||||
assert(array_len == 10);
|
||||
|
||||
//Find the array and the object
|
||||
res = segment.find<MyType> ("MyType instance");
|
||||
|
||||
std::size_t len = res.second;
|
||||
|
||||
//Length should be 1
|
||||
assert(len == 1);
|
||||
|
||||
//Change data
|
||||
// . . .
|
||||
|
||||
//We're done, delete array from memory
|
||||
segment.destroy<MyType>("MyType array");
|
||||
//We're done, delete object from memory
|
||||
segment.destroy<MyType>("MyType instance");
|
||||
}
|
||||
|
||||
MyType *anonymous = segment.construct<MyType>(anonymous_instance)
|
||||
[10] //number of elements
|
||||
(1, //ctor first argument
|
||||
1); //ctor second argument
|
||||
|
||||
segment.destroy_ptr(anonymous);
|
||||
|
||||
segment.construct<MyType>(unique_instance)
|
||||
[10] //number of elements
|
||||
(1, //ctor first argument
|
||||
1); //ctor second argument
|
||||
|
||||
std::pair<MyType *,std::size_t> ret = segment.find<MyType>(unique_instance);
|
||||
|
||||
segment.destroy<MyType>(unique_instance);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
@@ -1,38 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
#define BOOST_PRINTCONTAINER_HPP
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
struct PrintValues : public std::unary_function<int, void>
|
||||
{
|
||||
void operator() (int value) const
|
||||
{
|
||||
std::cout << value << " ";
|
||||
}
|
||||
};
|
||||
|
||||
template<class Container>
|
||||
void PrintContents(const Container &cont, const char *contName)
|
||||
{
|
||||
std::cout<< "Printing contents of " << contName << std::endl;
|
||||
std::for_each(cont.begin(), cont.end(), PrintValues());
|
||||
std::cout<< std::endl << std::endl;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
#endif //#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
@@ -1,38 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
#define BOOST_PRINTCONTAINER_HPP
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
#include <boost/interprocess/detail/workaround.hpp>
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
|
||||
struct PrintValues : public std::unary_function<int, void>
|
||||
{
|
||||
void operator() (int value) const
|
||||
{
|
||||
std::cout << value << " ";
|
||||
}
|
||||
};
|
||||
|
||||
template<class Container>
|
||||
void PrintContents(const Container &cont, const char *contName)
|
||||
{
|
||||
std::cout<< "Printing contents of " << contName << std::endl;
|
||||
std::for_each(cont.begin(), cont.end(), PrintValues());
|
||||
std::cout<< std::endl << std::endl;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
#endif //#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
@@ -1,81 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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/offset_ptr.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include "print_container.hpp"
|
||||
#include <algorithm>
|
||||
#include <boost/interprocess/sync/named_semaphore.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/sync/interprocess_condition.hpp>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Shared memory attributes
|
||||
const int memsize = 65536;
|
||||
const char *const shMemName = "MySharedMemory";
|
||||
|
||||
//Create sems for synchronization
|
||||
named_semaphore semA(open_or_create, "processAsem", 0);
|
||||
named_semaphore semB(open_or_create, "processBsem", 0);
|
||||
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(open_or_create, shMemName, memsize);
|
||||
|
||||
//STL compatible allocator object, uses allocate(), deallocate() functions
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
shmem_allocator_int_t;
|
||||
|
||||
const int num_elements = 100;
|
||||
|
||||
//Type of shared memory vector
|
||||
typedef vector<int, shmem_allocator_int_t > MyVect;
|
||||
|
||||
const shmem_allocator_int_t &alloc_ref (segment.get_segment_manager());
|
||||
|
||||
//Creating the vector in shared memory
|
||||
std::cout << "Named New of ShmVect\n\n";
|
||||
MyVect *shmem_vect = segment.construct<MyVect> ("ShmVect")(alloc_ref);
|
||||
|
||||
offset_ptr<MyVect> shmptr_vect = 0;
|
||||
offset_ptr<MyVect> other_shmptr_vect = 0;
|
||||
|
||||
//Fill the vector
|
||||
std::cout << "Filling ShmVect\n\n";
|
||||
int i;
|
||||
for(i = 0; i < num_elements; ++i){
|
||||
shmem_vect->push_back(i);
|
||||
}
|
||||
|
||||
//Printing contents before waiting to second process
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Wake up other process and sleeping until notified
|
||||
semB.post();
|
||||
std::cout << "Waking up processB and waiting sorting\n\n";
|
||||
semA.wait();
|
||||
|
||||
//Notification received, let's see the changes
|
||||
std::cout << "processB sorting complete\n\n";
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Let's delete the vector from memory
|
||||
std::cout << "Deleting the vector with destroy\n\n";
|
||||
segment.destroy<MyVect> ("ShmVect");
|
||||
std::cout << "vector deleted\n\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
@@ -1,82 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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/offset_ptr.hpp>
|
||||
#include <boost/interprocess/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/mem_algo/simple_seq_fit.hpp>
|
||||
#include "print_container.hpp"
|
||||
#include <boost/interprocess/sync/named_semaphore.hpp>
|
||||
#include <boost/interprocess/sync/interprocess_condition.hpp>
|
||||
#include <algorithm>
|
||||
#include <vector>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Shared memory attributes
|
||||
const int memsize = 65536;
|
||||
const char *const shMemName = "MySharedMemory";
|
||||
const void *const map_addr = reinterpret_cast<const void*>(0x30000000);
|
||||
|
||||
//Create sems for synchronization
|
||||
named_semaphore semA(open_or_create, "processAsem", 0);
|
||||
named_semaphore semB(open_or_create, "processBsem", 0);
|
||||
|
||||
//Create shared memory
|
||||
fixed_managed_shared_memory segment(create_only, shMemName, memsize, map_addr);
|
||||
|
||||
//STL compatible allocator object, uses allocate(), deallocate() functions
|
||||
typedef allocator<int, fixed_managed_shared_memory::segment_manager>
|
||||
shmem_allocator_int_t;
|
||||
const int num_elements = 100;
|
||||
|
||||
//Type of shared memory vector
|
||||
typedef std::vector<int, shmem_allocator_int_t > MyVect;
|
||||
|
||||
const shmem_allocator_int_t alloc_inst (segment.get_segment_manager());
|
||||
|
||||
//Creating the vector in shared memory
|
||||
std::cout << "Named New of ShmVect\n\n";
|
||||
MyVect *shmem_vect = segment.construct<MyVect> ("ShmVect")(alloc_inst);
|
||||
|
||||
offset_ptr<MyVect> shmptr_vect = 0;
|
||||
offset_ptr<MyVect> other_shmptr_vect = 0;
|
||||
|
||||
//Fill the vector
|
||||
std::cout << "Filling ShmVect\n\n";
|
||||
int i;
|
||||
for(i = 0; i < num_elements; ++i){
|
||||
shmem_vect->push_back(i);
|
||||
}
|
||||
|
||||
//Printing contents before waiting to second process
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Wake up other process and sleeping until notified
|
||||
semB.post();
|
||||
std::cout << "Waking up processB and waiting sorting\n\n";
|
||||
semA.wait();
|
||||
|
||||
//Notification received, let's see the changes
|
||||
std::cout << "processB sorting complete\n\n";
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Let's delete the vector from memory
|
||||
std::cout << "Deleting the vector with destroy\n\n";
|
||||
segment.destroy<MyVect> ("ShmVect");
|
||||
std::cout << "vector deleted\n\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
@@ -1,71 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/containers/vector.hpp>
|
||||
#include <boost/interprocess/sync/named_semaphore.hpp>
|
||||
|
||||
#include "print_container.hpp"
|
||||
#include <algorithm>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Shared memory attributes
|
||||
const char *const shMemName = "MySharedMemory";
|
||||
|
||||
//Create sems for synchronization
|
||||
named_semaphore semA(open_or_create, "processAsem", 0);
|
||||
named_semaphore semB(open_or_create, "processBsem", 0);
|
||||
|
||||
//Wait until the shared memory is ready
|
||||
semB.wait();
|
||||
|
||||
//Create shared memory
|
||||
managed_shared_memory segment(open_or_create, shMemName, 65536);
|
||||
|
||||
//STL compatible allocator object, uses allocate(), deallocate() functions
|
||||
typedef allocator<int, managed_shared_memory::segment_manager>
|
||||
shmem_allocator_int_t;
|
||||
|
||||
//This is the shared memory vector type
|
||||
typedef vector<int, shmem_allocator_int_t > MyVect;
|
||||
|
||||
//Finding vector in shared memory and printing contents
|
||||
std::cout << "Connecting to object ShmVect\n\n";
|
||||
MyVect *shmem_vect = segment.find<MyVect>("ShmVect").first;
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Reverse sorting the vector with std::sort
|
||||
std::cout << "Reverse sorting ShmVect\n\n";
|
||||
MyVect::reverse_iterator rbeg =
|
||||
shmem_vect->rbegin(), rend = shmem_vect->rend();
|
||||
std::sort(shmem_vect->rbegin(), shmem_vect->rend());
|
||||
std::sort(rbeg, rend);
|
||||
|
||||
//Printing values after sorting
|
||||
std::cout << "Sorting complete\n\n";
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Waking up process A
|
||||
std::cout << "Waking up processA\n\n";
|
||||
semA.post();
|
||||
|
||||
//We're done, closing shared memory
|
||||
std::cout << "Closing shmem segment\n\n";
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
@@ -1,69 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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/allocators/allocator.hpp>
|
||||
#include <boost/interprocess/managed_shared_memory.hpp>
|
||||
#include <boost/interprocess/sync/named_semaphore.hpp>
|
||||
|
||||
#include "print_container.hpp"
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
using namespace boost::interprocess;
|
||||
|
||||
int main ()
|
||||
{
|
||||
//Shared memory attributes
|
||||
const char *const shMemName = "MySharedMemory";
|
||||
const void *const map_addr = reinterpret_cast<const void*>(0x30000000);
|
||||
|
||||
//Create sems for synchronization
|
||||
named_semaphore semA(open_or_create, "processAsem", 1);
|
||||
named_semaphore semB(open_or_create, "processBsem", 1);
|
||||
|
||||
//Wait until the shared memory is ready
|
||||
semB.wait();
|
||||
|
||||
//Create shared memory
|
||||
fixed_managed_shared_memory segment(open_only, shMemName, map_addr);
|
||||
|
||||
//STL compatible allocator object, uses allocate(), deallocate() functions
|
||||
typedef allocator<int,fixed_managed_shared_memory::segment_manager>
|
||||
shmem_allocator_int_t;
|
||||
|
||||
//This is the shared memory vector type
|
||||
typedef std::vector<int, shmem_allocator_int_t > MyVect;
|
||||
|
||||
//Finding vector in shared memory and printing contents
|
||||
std::cout << "Connecting to object ShmVect\n\n";
|
||||
MyVect *shmem_vect = segment.find<MyVect>("ShmVect").first;
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Reverse sorting the vector with std::sort
|
||||
std::cout << "Reverse sorting ShmVect\n\n";
|
||||
std::sort(shmem_vect->rbegin(), shmem_vect->rend());
|
||||
|
||||
//Printing values after sorting
|
||||
std::cout << "Sorting complete\n\n";
|
||||
PrintContents(*shmem_vect, "ShmVect");
|
||||
|
||||
//Waking up process A
|
||||
std::cout << "Waking up processA\n\n";
|
||||
semA.post();
|
||||
|
||||
//We're done, closing shared memory
|
||||
std::cout << "Closing shmem segment\n\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
@@ -1,35 +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/*
|
||||
|
||||
#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/*
|
||||
|
||||
@@ -1,39 +1,39 @@
|
||||
|
||||
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/cygwin/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/cygwin/ex_%.out, $(INTERPROCESSEXAMPLE_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) $(INTERPROCESSEXAMPLE_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/*
|
||||
|
||||
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/cygwin/test_%.out, $(INTERPROCESSTEST_CPP))
|
||||
|
||||
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
|
||||
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/cygwin/ex_%.out, $(INTERPROCESSEXAMPLE_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) $(INTERPROCESSEXAMPLE_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/*
|
||||
|
||||
@@ -1,32 +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/*
|
||||
|
||||
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/*
|
||||
|
||||
@@ -1,35 +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/*
|
||||
|
||||
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/*
|
||||
|
||||
@@ -1,33 +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/*
|
||||
|
||||
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
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.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,133 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ProcessA"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792619}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/ProcessA"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessA_d.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/ProcessA.pdb"
|
||||
SubSystem="1"
|
||||
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>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/ProcessA"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessA.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="..\..\example\process_a_example.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>
|
||||
@@ -1,133 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ProcessAFixed"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792618}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/ProcessAFixed"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessAFixed_d.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/ProcessAFixed.pdb"
|
||||
SubSystem="1"
|
||||
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>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/ProcessAFixed"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessAFixed.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="..\..\example\process_a_fixed_example.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>
|
||||
@@ -1,132 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ProcessB"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792617}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/ProcessB"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessB_d.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/ProcessB.pdb"
|
||||
SubSystem="1"
|
||||
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>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/ProcessB"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessB.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="..\..\example\process_b_example.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,132 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="ProcessBFixed"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792616}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/ProcessBFixed"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="4"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessBFixed_d.exe"
|
||||
LinkIncremental="2"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/ProcessBFixed.pdb"
|
||||
SubSystem="1"
|
||||
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>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Release"
|
||||
IntermediateDirectory="Release/ProcessBFixed"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/ProcessBFixed.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="..\..\example\process_b_fixed_example.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="allocate_ex"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792663}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/allocate_ex"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/allocate_ex_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/allocate_ex.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/allocate_ex"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/allocate_ex.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="..\..\example\alloc_example.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>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="file_lock_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792639}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/file_lock_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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/file_lock_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/file_lock_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/file_lock_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/file_lock_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="{7FCFEF41-3746-C7A5-8B8E-A352A2F22D7F}">
|
||||
<File
|
||||
RelativePath="..\..\test\file_lock_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{95393980-8912-4b74-66A0-607BE52EB5FB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="hash_table_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792636}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/hash_table_ex"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/hash_table_ex_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/hash_table_ex.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/hash_table_ex"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/hash_table_ex.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\hash_table_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>
|
||||
@@ -1,137 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="intersegment_ptr_test"
|
||||
ProjectGUID="{58CCE183-6092-12FE-A4F7-BA0D3A767634}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/intersegment_ptr_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
MinimalRebuild="TRUE"
|
||||
ExceptionHandling="TRUE"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
RuntimeTypeInfo="TRUE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/intersegment_ptr_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/intersegment_ptr_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/intersegment_ptr_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
RuntimeTypeInfo="TRUE"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/intersegment_ptr_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-CAA5-4376-A066-2A32D752A2FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\intersegment_ptr_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-8ABD-4b04-88EB-625FBE52EBFB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="named_allocate_ex"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792626}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/named_allocate_ex"
|
||||
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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/named_allocate_ex_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/named_allocate_ex.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/named_allocate_ex"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/named_allocate_ex.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="..\..\example\named_alloc_example.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>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="read_write_mutex_test"
|
||||
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792615}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/shared_read_write_mutex_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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_read_write_mutex_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/shared_read_write_mutex_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_read_write_mutex_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_read_write_mutex_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\read_write_mutex_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>
|
||||
@@ -1,134 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="sharable_mutex_test"
|
||||
ProjectGUID="{5E188CC3-0962-F7A4-8F4E-A0D3B606A712}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/sharable_mutex_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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/sharable_mutex_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/sharable_mutex_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/sharable_mutex_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/sharable_mutex_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="{4737FCF1-C7A5-A606-4376-2A3252AD72FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\sharable_mutex_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{98903953-8D9B-88EB-4b04-6BBF2E52E5FB}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,135 +0,0 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="7.10"
|
||||
Name="shared_memory_mapping_test"
|
||||
ProjectGUID="{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
|
||||
Keyword="Win32Proj">
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"/>
|
||||
</Platforms>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="../../Bin/Win32/Debug"
|
||||
IntermediateDirectory="Debug/shared_memory_mapping_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"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="3"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/mapped_file_test_d.exe"
|
||||
LinkIncremental="1"
|
||||
AdditionalLibraryDirectories="../../../../stage/lib"
|
||||
GenerateDebugInformation="TRUE"
|
||||
ProgramDatabaseFile="$(OutDir)/shared_memory_mapping_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_memory_mapping_test"
|
||||
ConfigurationType="1"
|
||||
CharacterSet="2">
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="3"
|
||||
AdditionalIncludeDirectories="../../../.."
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="TRUE"
|
||||
DebugInformationFormat="0"/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib"
|
||||
OutputFile="$(OutDir)/shared_memory_mapping_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="{4F737F1-C7A5-3256-66A0-2A352A22D7FF}">
|
||||
<File
|
||||
RelativePath="..\..\test\shared_memory_mapping_test.cpp">
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{5CE18253-89BD-b044-826B-62B5F2EBFBE5}">
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -1,371 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2006. 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.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_INTERPROCESS_TEST_ALLOCATION_TEST_TEMPLATE_HEADER
|
||||
#define BOOST_INTERPROCESS_TEST_ALLOCATION_TEST_TEMPLATE_HEADER
|
||||
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include <new>
|
||||
#include <utility>
|
||||
|
||||
namespace boost { namespace interprocess { namespace test {
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that deallocates all in the inverse order
|
||||
template<class Allocator>
|
||||
bool test_allocation_inverse_deallocation(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
for(int j = (int)buffers.size()
|
||||
;j--
|
||||
;){
|
||||
a.deallocate(buffers[j]);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that deallocates all in the same order
|
||||
template<class Allocator>
|
||||
bool test_allocation_direct_deallocation(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
for(int j = 0, max = (int)buffers.size()
|
||||
;j < max
|
||||
;++j){
|
||||
a.deallocate(buffers[j]);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that deallocates all following a pattern
|
||||
template<class Allocator>
|
||||
bool test_allocation_mixed_deallocation(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
for(int j = 0, max = (int)buffers.size()
|
||||
;j < max
|
||||
;++j){
|
||||
int pos = (j%4)*((int)buffers.size())/4;
|
||||
a.deallocate(buffers[pos]);
|
||||
buffers.erase(buffers.begin()+pos);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that tries to shrink all the buffers to the
|
||||
//half of the original size
|
||||
template<class Allocator>
|
||||
bool test_allocation_shrink(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
//Allocate buffers with extra memory
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i*2, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
//Now shrink to half
|
||||
for(int i = 0, max = (int)buffers.size()
|
||||
;i < max
|
||||
; ++i){
|
||||
std::size_t received_size;
|
||||
if(a.allocation_command( shrink_in_place | nothrow_allocation, i*2
|
||||
, i, received_size, buffers[i]).first){
|
||||
if(received_size > std::size_t(i*2)){
|
||||
return false;
|
||||
}
|
||||
if(received_size < std::size_t(i)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Deallocate it in non sequential order
|
||||
for(int j = 0, max = (int)buffers.size()
|
||||
;j < max
|
||||
;++j){
|
||||
int pos = (j%4)*((int)buffers.size())/4;
|
||||
a.deallocate(buffers[pos]);
|
||||
buffers.erase(buffers.begin()+pos);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that tries to expand all the buffers to
|
||||
//avoid the wasted internal fragmentation
|
||||
template<class Allocator>
|
||||
bool test_allocation_expand(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
//Allocate buffers with extra memory
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
//Now try to expand to the double of the size
|
||||
for(int i = 0, max = (int)buffers.size()
|
||||
;i < max
|
||||
;++i){
|
||||
std::size_t received_size;
|
||||
std::size_t min_size = i+1;
|
||||
std::size_t preferred_size = i*2;
|
||||
preferred_size = min_size > preferred_size ? min_size : preferred_size;
|
||||
|
||||
while(a.allocation_command( expand_fwd | nothrow_allocation, min_size
|
||||
, preferred_size, received_size, buffers[i]).first){
|
||||
//Check received size is bigger than minimum
|
||||
if(received_size < min_size){
|
||||
return false;
|
||||
}
|
||||
//Now, try to expand further
|
||||
min_size = received_size+1;
|
||||
preferred_size = min_size*2;
|
||||
}
|
||||
}
|
||||
|
||||
//Deallocate it in non sequential order
|
||||
for(int j = 0, max = (int)buffers.size()
|
||||
;j < max
|
||||
;++j){
|
||||
int pos = (j%4)*((int)buffers.size())/4;
|
||||
a.deallocate(buffers[pos]);
|
||||
buffers.erase(buffers.begin()+pos);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that deallocates the odd buffers to
|
||||
//make room for expansions. The expansion will probably
|
||||
//success since the deallocation left room for that.
|
||||
template<class Allocator>
|
||||
bool test_allocation_deallocation_expand(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
//Allocate buffers with extra memory
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
//Now deallocate the half of the blocks
|
||||
//so expand maybe can merge new free blocks
|
||||
for(int i = 0, max = (int)buffers.size()
|
||||
;i < max
|
||||
;++i){
|
||||
if(i%2){
|
||||
a.deallocate(buffers[i]);
|
||||
buffers[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Now try to expand to the double of the size
|
||||
for(int i = 0, max = (int)buffers.size()
|
||||
;i < max
|
||||
;++i){
|
||||
//
|
||||
if(buffers[i]){
|
||||
std::size_t received_size;
|
||||
std::size_t min_size = i+1;
|
||||
std::size_t preferred_size = i*2;
|
||||
preferred_size = min_size > preferred_size ? min_size : preferred_size;
|
||||
|
||||
while(a.allocation_command( expand_fwd | nothrow_allocation, min_size
|
||||
, preferred_size, received_size, buffers[i]).first){
|
||||
//Check received size is bigger than minimum
|
||||
if(received_size < min_size){
|
||||
return false;
|
||||
}
|
||||
//Now, try to expand further
|
||||
min_size = received_size+1;
|
||||
preferred_size = min_size*2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Now erase null values from the vector
|
||||
buffers.erase(std::remove(buffers.begin(), buffers.end(), (void*)0)
|
||||
,buffers.end());
|
||||
|
||||
//Deallocate it in non sequential order
|
||||
for(int j = 0, max = (int)buffers.size()
|
||||
;j < max
|
||||
;++j){
|
||||
int pos = (j%4)*((int)buffers.size())/4;
|
||||
a.deallocate(buffers[pos]);
|
||||
buffers.erase(buffers.begin()+pos);
|
||||
}
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This test allocates until there is no more memory
|
||||
//and after that deallocates all except the last.
|
||||
//If the allocation algorithm is a bottom-up algorithm
|
||||
//the last buffer will be in the end of the segment.
|
||||
//Then the test will start expanding backwards, until
|
||||
//the buffer fills all the memory
|
||||
template<class Allocator>
|
||||
bool test_allocation_with_reuse(Allocator &a)
|
||||
{
|
||||
std::vector<void*> buffers;
|
||||
|
||||
//Allocate buffers with extra memory
|
||||
for(int i = 0; true; ++i){
|
||||
void *ptr = a.allocate(i, std::nothrow);
|
||||
if(!ptr)
|
||||
break;
|
||||
buffers.push_back(ptr);
|
||||
}
|
||||
|
||||
//Now deallocate all except the latest
|
||||
//Now try to expand to the double of the size
|
||||
for(int i = 0, max = (int)buffers.size() - 1
|
||||
;i < max
|
||||
;++i){
|
||||
a.deallocate(buffers[i]);
|
||||
}
|
||||
|
||||
//Save the unique buffer and clear vector
|
||||
void *ptr = buffers.back();
|
||||
buffers.clear();
|
||||
|
||||
//Now allocate with reuse
|
||||
std::size_t received_size = 0;
|
||||
for(int i = 0; true; ++i){
|
||||
std::pair<void*, bool> ret =
|
||||
a.allocation_command( expand_bwd | nothrow_allocation, received_size+1
|
||||
, received_size+(i+1)*2, received_size, ptr);
|
||||
if(!ret.first)
|
||||
break;
|
||||
//If we have memory, this must be a buffer reuse
|
||||
if(!ret.second)
|
||||
return 1;
|
||||
ptr = ret.first;
|
||||
}
|
||||
//There is only a single block so deallocate it
|
||||
a.deallocate(ptr);
|
||||
|
||||
return a.all_memory_deallocated() && a.check_sanity();
|
||||
}
|
||||
|
||||
//This function calls all tests
|
||||
template<class Allocator>
|
||||
bool test_all_allocation(Allocator &a)
|
||||
{
|
||||
|
||||
std::cout << "Starting test_allocation_direct_deallocation. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
|
||||
if(!test_allocation_direct_deallocation(a)){
|
||||
std::cout << "test_allocation_direct_deallocation failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::cout << "Starting test_allocation_inverse_deallocation. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
|
||||
if(!test_allocation_inverse_deallocation(a)){
|
||||
std::cout << "test_allocation_inverse_deallocation failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::cout << "Starting test_allocation_mixed_deallocation. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
|
||||
if(!test_allocation_mixed_deallocation(a)){
|
||||
std::cout << "test_allocation_mixed_deallocation failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::cout << "Starting test_allocation_shrink. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
|
||||
if(!test_allocation_shrink(a)){
|
||||
std::cout << "test_allocation_shrink failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
std::cout << "Starting test_allocation_expand. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
|
||||
if(!test_allocation_expand(a)){
|
||||
std::cout << "test_allocation_expand failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!test_allocation_deallocation_expand(a)){
|
||||
std::cout << "test_allocation_deallocation_expand failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!test_allocation_with_reuse(a)){
|
||||
std::cout << "test_allocation_with_reuse failed. Class: "
|
||||
<< typeid(a).name() << std::endl;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}}} //namespace boost { namespace interprocess { namespace test {
|
||||
|
||||
#endif //BOOST_INTERPROCESS_TEST_ALLOCATION_TEST_TEMPLATE_HEADER
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2004-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.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_GET_COMPILER_NAME_HPP
|
||||
#define BOOST_GET_COMPILER_NAME_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
|
||||
namespace boost{
|
||||
namespace interprocess{
|
||||
namespace test{
|
||||
|
||||
inline void get_compiler_name(std::string &str)
|
||||
{
|
||||
str = BOOST_COMPILER;
|
||||
std::replace(str.begin(), str.end(), ' ', '_');
|
||||
std::replace(str.begin(), str.end(), '.', '_');
|
||||
}
|
||||
|
||||
inline const char *get_compiler_name()
|
||||
{
|
||||
static std::string str;
|
||||
get_compiler_name(str);
|
||||
return str.c_str();
|
||||
}
|
||||
|
||||
inline const char *add_to_compiler_name(const char *name)
|
||||
{
|
||||
static std::string str;
|
||||
get_compiler_name(str);
|
||||
str += name;
|
||||
return str.c_str();
|
||||
}
|
||||
|
||||
} //namespace test{
|
||||
} //namespace interprocess{
|
||||
} //namespace boost{
|
||||
|
||||
#endif //#ifndef BOOST_GET_COMPILER_NAME_HPP
|
||||
@@ -1,45 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
#define BOOST_PRINTCONTAINER_HPP
|
||||
|
||||
#include <functional>
|
||||
#include <iostream>
|
||||
#include <algorithm>
|
||||
#include <boost/interprocess/detail/config_begin.hpp>
|
||||
|
||||
namespace boost{
|
||||
namespace interprocess{
|
||||
namespace test{
|
||||
|
||||
struct PrintValues : public std::unary_function<int, void>
|
||||
{
|
||||
void operator() (int value) const
|
||||
{
|
||||
std::cout << value << " ";
|
||||
}
|
||||
};
|
||||
|
||||
template<class Container>
|
||||
void PrintContents(const Container &cont, const char *contName)
|
||||
{
|
||||
std::cout<< "Printing contents of " << contName << std::endl;
|
||||
std::for_each(cont.begin(), cont.end(), PrintValues());
|
||||
std::cout<< std::endl << std::endl;
|
||||
}
|
||||
|
||||
} //namespace test{
|
||||
} //namespace interprocess{
|
||||
} //namespace boost{
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
#endif //#ifndef BOOST_PRINTCONTAINER_HPP
|
||||
Reference in New Issue
Block a user