diff --git a/example/comp_doc_anonymous_conditionA.cpp b/example/comp_doc_anonymous_conditionA.cpp index cd0c7d3..7052723 100644 --- a/example/comp_doc_anonymous_conditionA.cpp +++ b/example/comp_doc_anonymous_conditionA.cpp @@ -22,10 +22,10 @@ int main () { //Erase previous shared memory and schedule erasure on exit - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create a shared memory object. diff --git a/example/comp_doc_anonymous_mutexA.cpp b/example/comp_doc_anonymous_mutexA.cpp index bbbc33c..0c2e0b7 100644 --- a/example/comp_doc_anonymous_mutexA.cpp +++ b/example/comp_doc_anonymous_mutexA.cpp @@ -22,10 +22,10 @@ int main () { try{ //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create a shared memory object. diff --git a/example/comp_doc_anonymous_mutexB.cpp b/example/comp_doc_anonymous_mutexB.cpp index 4a7ed40..fa024ff 100644 --- a/example/comp_doc_anonymous_mutexB.cpp +++ b/example/comp_doc_anonymous_mutexB.cpp @@ -21,9 +21,9 @@ using namespace boost::interprocess; int main () { //Remove shared memory on destruction - struct shm_destroy + struct shm_remove { - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Open the shared memory object. diff --git a/example/comp_doc_anonymous_semaphoreA.cpp b/example/comp_doc_anonymous_semaphoreA.cpp index 856ecfc..9d89624 100644 --- a/example/comp_doc_anonymous_semaphoreA.cpp +++ b/example/comp_doc_anonymous_semaphoreA.cpp @@ -19,10 +19,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create a shared memory object. diff --git a/example/comp_doc_anonymous_semaphoreB.cpp b/example/comp_doc_anonymous_semaphoreB.cpp index 29975f7..7ab6fc8 100644 --- a/example/comp_doc_anonymous_semaphoreB.cpp +++ b/example/comp_doc_anonymous_semaphoreB.cpp @@ -19,9 +19,9 @@ using namespace boost::interprocess; int main () { //Remove shared memory on destruction - struct shm_destroy + struct shm_remove { - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create a shared memory object. diff --git a/example/comp_doc_anonymous_upgradable_mutexA.cpp b/example/comp_doc_anonymous_upgradable_mutexA.cpp index b07d9dd..2cd65b0 100644 --- a/example/comp_doc_anonymous_upgradable_mutexA.cpp +++ b/example/comp_doc_anonymous_upgradable_mutexA.cpp @@ -21,9 +21,9 @@ using namespace boost::interprocess; int main () { //Remove shared memory on destruction - struct shm_destroy + struct shm_remove { - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create a shared memory object. diff --git a/example/comp_doc_anonymous_upgradable_mutexB.cpp b/example/comp_doc_anonymous_upgradable_mutexB.cpp index e0448e7..a4afa2f 100644 --- a/example/comp_doc_anonymous_upgradable_mutexB.cpp +++ b/example/comp_doc_anonymous_upgradable_mutexB.cpp @@ -22,9 +22,9 @@ using namespace boost::interprocess; int main () { //Remove shared memory on destruction - struct shm_destroy + struct shm_remove { - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Open the shared memory object. diff --git a/example/doc_adaptive_pool.cpp b/example/doc_adaptive_pool.cpp index e013ea3..13fff37 100644 --- a/example/doc_adaptive_pool.cpp +++ b/example/doc_adaptive_pool.cpp @@ -19,10 +19,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_allocator.cpp b/example/doc_allocator.cpp index 132658f..62aed8c 100644 --- a/example/doc_allocator.cpp +++ b/example/doc_allocator.cpp @@ -19,10 +19,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_bufferstream.cpp b/example/doc_bufferstream.cpp index 9e14d6a..179b4c9 100644 --- a/example/doc_bufferstream.cpp +++ b/example/doc_bufferstream.cpp @@ -21,10 +21,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_cached_adaptive_pool.cpp b/example/doc_cached_adaptive_pool.cpp index 6f0f7bf..d51923c 100644 --- a/example/doc_cached_adaptive_pool.cpp +++ b/example/doc_cached_adaptive_pool.cpp @@ -19,10 +19,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_cached_node_allocator.cpp b/example/doc_cached_node_allocator.cpp index 0d19046..016931e 100644 --- a/example/doc_cached_node_allocator.cpp +++ b/example/doc_cached_node_allocator.cpp @@ -19,10 +19,10 @@ using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_complex_map.cpp b/example/doc_complex_map.cpp index e8d7238..ecfa1f1 100644 --- a/example/doc_complex_map.cpp +++ b/example/doc_complex_map.cpp @@ -15,6 +15,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -53,14 +56,31 @@ typedef map< char_string, complex_data int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only,test::get_process_id_name(), 65536); + #else + //-> managed_shared_memory segment(create_only,"MySharedMemory", 65536); + //<- + #endif + //-> //An allocator convertible to any allocator type void_allocator alloc_inst (segment.get_segment_manager()); diff --git a/example/doc_cont.cpp b/example/doc_cont.cpp index cd0680d..df0db4c 100644 --- a/example/doc_cont.cpp +++ b/example/doc_cont.cpp @@ -18,10 +18,10 @@ int main () { using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //A managed shared memory where we can construct objects diff --git a/example/doc_file_mapping.cpp b/example/doc_file_mapping.cpp index 3286cef..3cd885b 100644 --- a/example/doc_file_mapping.cpp +++ b/example/doc_file_mapping.cpp @@ -18,6 +18,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> int main(int argc, char *argv[]) { @@ -26,8 +29,17 @@ int main(int argc, char *argv[]) if(argc == 1){ //Parent process executes this { //Create a file std::filebuf fbuf; + //<- + #if 1 + fbuf.open(test::get_process_id_name(), std::ios_base::in | std::ios_base::out + | std::ios_base::trunc | std::ios_base::binary); + #else + //-> fbuf.open("file.bin", std::ios_base::in | std::ios_base::out | std::ios_base::trunc | std::ios_base::binary); + //<- + #endif + //-> //Set the size fbuf.pubseekoff(FileSize-1, std::ios_base::beg); fbuf.sputc(0); @@ -35,11 +47,27 @@ int main(int argc, char *argv[]) //Remove file on exit struct file_remove { + //<- + #if 1 + ~file_remove (){ file_mapping::remove(test::get_process_id_name()); } + #else + //-> ~file_remove (){ file_mapping::remove("file.bin"); } + //<- + #endif + //-> } destroy_on_exit; //Create a file mapping + //<- + #if 1 + file_mapping m_file(test::get_process_id_name(), read_write); + #else + //-> file_mapping m_file("file.bin", read_write); + //<- + #endif + //-> //Map the whole file with read-write permissions in this process mapped_region region(m_file, read_write); @@ -52,13 +80,25 @@ int main(int argc, char *argv[]) std::memset(addr, 1, size); //Launch child process - std::string s(argv[0]); s += " child"; + std::string s(argv[0]); s += " child "; + //<- + s += test::get_process_id_name(); + //-> if(0 != std::system(s.c_str())) return 1; } else{ //Child process executes this { //Open the file mapping and map it as read-only - file_mapping m_file ("file.bin", read_only); + //<- + #if 1 + file_mapping m_file(argv[2], read_only); + #else + //-> + file_mapping m_file("file.bin", read_only); + //<- + #endif + //-> + mapped_region region(m_file, read_only); //Get the address of the mapped region @@ -73,7 +113,15 @@ int main(int argc, char *argv[]) } { //Now test it reading the file std::filebuf fbuf; + //<- + #if 1 + fbuf.open(argv[2], std::ios_base::in | std::ios_base::binary); + #else + //-> fbuf.open("file.bin", std::ios_base::in | std::ios_base::binary); + //<- + #endif + //-> //Read it to memory std::vector vect(FileSize, 0); diff --git a/example/doc_intrusive.cpp b/example/doc_intrusive.cpp index 1548959..4a4eab6 100644 --- a/example/doc_intrusive.cpp +++ b/example/doc_intrusive.cpp @@ -72,10 +72,10 @@ class intrusive_ptr_owner int main() { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Create shared memory diff --git a/example/doc_ipc_message.cpp b/example/doc_ipc_message.cpp index edceb85..1233e1d 100644 --- a/example/doc_ipc_message.cpp +++ b/example/doc_ipc_message.cpp @@ -13,6 +13,9 @@ #include #include //std::system #include +//<- +#include "../test/get_process_id_name.hpp" +//-> int main (int argc, char *argv[]) { @@ -21,12 +24,29 @@ int main (int argc, char *argv[]) //Remove shared memory on construction and destruction struct shm_remove { + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> shm_remove() { shared_memory_object::remove("MySharedMemory"); } ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create a managed shared memory segment + //<- + #if 1 + managed_shared_memory segment(create_only, test::get_process_id_name(), 65536); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", 65536); + //<- + #endif + //-> //Allocate a portion of the segment (raw memory) std::size_t free_memory = segment.get_free_memory(); @@ -40,8 +60,11 @@ int main (int argc, char *argv[]) //memory segment even if it is mapped in different base addresses managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr); std::stringstream s; - s << argv[0] << " " << handle << std::ends; - + s << argv[0] << " " << handle; + //<- + s << " " << test::get_process_id_name(); + //-> + s << std::ends; //Launch child process if(0 != std::system(s.str().c_str())) return 1; @@ -51,7 +74,15 @@ int main (int argc, char *argv[]) } else{ //Open managed segment + //<- + #if 1 + managed_shared_memory segment(open_only, argv[2]); + #else + //-> managed_shared_memory segment(open_only, "MySharedMemory"); + //<- + #endif + //-> //An handle from the base address can identify any byte of the shared //memory segment even if it is mapped in different base addresses diff --git a/example/doc_managed_aligned_allocation.cpp b/example/doc_managed_aligned_allocation.cpp index f94f569..f7cd1b5 100644 --- a/example/doc_managed_aligned_allocation.cpp +++ b/example/doc_managed_aligned_allocation.cpp @@ -17,10 +17,10 @@ int main() using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Managed memory segment that allocates portions of a shared memory diff --git a/example/doc_managed_allocation_command.cpp b/example/doc_managed_allocation_command.cpp index 8023c6d..a90790b 100644 --- a/example/doc_managed_allocation_command.cpp +++ b/example/doc_managed_allocation_command.cpp @@ -17,10 +17,10 @@ int main() using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Managed memory segment that allocates portions of a shared memory diff --git a/example/doc_managed_construction_info.cpp b/example/doc_managed_construction_info.cpp index f573181..874e1f7 100644 --- a/example/doc_managed_construction_info.cpp +++ b/example/doc_managed_construction_info.cpp @@ -23,10 +23,10 @@ int main() using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; managed_shared_memory managed_shm(create_only, "MySharedMemory", 10000*sizeof(std::size_t)); diff --git a/example/doc_managed_external_buffer.cpp b/example/doc_managed_external_buffer.cpp index f9e9855..5e4b507 100644 --- a/example/doc_managed_external_buffer.cpp +++ b/example/doc_managed_external_buffer.cpp @@ -13,6 +13,7 @@ #include #include #include +#include int main() { @@ -20,12 +21,13 @@ int main() //Create the static memory who will store all objects const int memsize = 65536; - static char static_buffer [memsize]; + + static boost::aligned_storage::type static_buffer; //This managed memory will construct objects associated with //a wide string in the static buffer wmanaged_external_buffer objects_in_static_memory - (create_only, static_buffer, memsize); + (create_only, &static_buffer, memsize); //We optimize resources to create 100 named objects in the static buffer objects_in_static_memory.reserve_named_objects(100); @@ -50,12 +52,12 @@ int main() //pointers and all the pointers constructed int the static memory point //to objects in the same segment, we can create another static buffer //from the first one and duplicate all the data. - static char static_buffer2 [memsize]; - std::memcpy(static_buffer2, static_buffer, memsize); + static boost::aligned_storage::type static_buffer2; + std::memcpy(&static_buffer2, &static_buffer, memsize); //Now open the duplicated managed memory passing the memory as argument wmanaged_external_buffer objects_in_static_memory2 - (open_only, static_buffer2, memsize); + (open_only, &static_buffer2, memsize); //Check that "MyList" has been duplicated in the second buffer if(!objects_in_static_memory2.find(L"MyList").first) diff --git a/example/doc_managed_grow.cpp b/example/doc_managed_grow.cpp index 1523222..5b34990 100644 --- a/example/doc_managed_grow.cpp +++ b/example/doc_managed_grow.cpp @@ -12,6 +12,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> class MyClass { @@ -22,15 +25,33 @@ int main() { using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; { //Create a managed shared memory + //<- + #if 1 + managed_shared_memory shm(create_only, test::get_process_id_name(), 1000); + #else + //-> managed_shared_memory shm(create_only, "MySharedMemory", 1000); + //<- + #endif + //-> + //Check size assert(shm.get_size() == 1000); //Construct a named object @@ -42,9 +63,26 @@ int main() } { //Now that the segment is not mapped grow it adding extra 500 bytes + //<- + #if 1 + managed_shared_memory::grow(test::get_process_id_name(), 500); + #else + //-> managed_shared_memory::grow("MySharedMemory", 500); + //<- + #endif + //-> + //Map it again + //<- + #if 1 + managed_shared_memory shm(open_only, test::get_process_id_name()); + #else + //-> managed_shared_memory shm(open_only, "MySharedMemory"); + //<- + #endif + //-> //Check size assert(shm.get_size() == 1500); //Check "MyClass" is still there @@ -54,9 +92,26 @@ int main() } { //Now minimize the size of the segment + //<- + #if 1 + managed_shared_memory::shrink_to_fit(test::get_process_id_name()); + #else + //-> managed_shared_memory::shrink_to_fit("MySharedMemory"); + //<- + #endif + //-> + //Map it again + //<- + #if 1 + managed_shared_memory shm(open_only, test::get_process_id_name()); + #else + //-> managed_shared_memory shm(open_only, "MySharedMemory"); + //<- + #endif + //-> //Check size assert(shm.get_size() < 1000); //Check "MyClass" is still there diff --git a/example/doc_managed_multiple_allocation.cpp b/example/doc_managed_multiple_allocation.cpp index e1ac02f..46885db 100644 --- a/example/doc_managed_multiple_allocation.cpp +++ b/example/doc_managed_multiple_allocation.cpp @@ -23,10 +23,10 @@ int main() typedef managed_shared_memory::multiallocation_chain multiallocation_chain; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; managed_shared_memory managed_shm(create_only, "MySharedMemory", 65536); diff --git a/example/doc_managed_raw_allocation.cpp b/example/doc_managed_raw_allocation.cpp index ac7cf24..3207954 100644 --- a/example/doc_managed_raw_allocation.cpp +++ b/example/doc_managed_raw_allocation.cpp @@ -16,10 +16,10 @@ int main() using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Managed memory segment that allocates portions of a shared memory diff --git a/example/doc_map.cpp b/example/doc_map.cpp index a1b2b14..a404e12 100644 --- a/example/doc_map.cpp +++ b/example/doc_map.cpp @@ -21,10 +21,10 @@ int main () using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; //Shared memory front-end that is able to construct objects diff --git a/example/doc_move_containers.cpp b/example/doc_move_containers.cpp index c831bda..b0b6b0b 100644 --- a/example/doc_move_containers.cpp +++ b/example/doc_move_containers.cpp @@ -29,10 +29,10 @@ int main () typedef vector MyShmStringVector; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } } remover; managed_shared_memory shm(create_only, "MySharedMemory", 10000); diff --git a/example/doc_multi_index.cpp b/example/doc_multi_index.cpp index dff5bd4..e4b0924 100644 --- a/example/doc_multi_index.cpp +++ b/example/doc_multi_index.cpp @@ -17,6 +17,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; namespace bmi = boost::multi_index; @@ -62,14 +65,31 @@ typedef bmi::multi_index_container< int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only,test::get_process_id_name(), 65536); + #else + //-> managed_shared_memory segment(create_only,"MySharedMemory", 65536); + //<- + #endif + //-> //Construct the multi_index in shared memory employee_set *es = segment.construct diff --git a/example/doc_named_alloc.cpp b/example/doc_named_alloc.cpp index 30767a8..cf4f480 100644 --- a/example/doc_named_alloc.cpp +++ b/example/doc_named_alloc.cpp @@ -15,6 +15,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> int main(int argc, char *argv[]) { @@ -25,12 +28,29 @@ int main(int argc, char *argv[]) //Remove shared memory on construction and destruction struct shm_remove { - shm_remove() { shared_memory_object::remove("MySharedMemory"); } - ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Construct managed shared memory + //<- + #if 1 + managed_shared_memory segment(create_only, test::get_process_id_name(), 65536); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", 65536); + //<- + #endif + //-> //Create an object of MyType initialized to {0.0, 0} MyType *instance = segment.construct @@ -55,7 +75,10 @@ int main(int argc, char *argv[]) , &int_initializer[0]); //Iterator for the 2nd ctor argument //Launch child process - std::string s(argv[0]); s += " child"; + std::string s(argv[0]); s += " child "; + //<- + s += test::get_process_id_name(); + //-> if(0 != std::system(s.c_str())) return 1; @@ -73,7 +96,15 @@ int main(int argc, char *argv[]) } else{ //Open managed shared memory + //<- + #if 1 + managed_shared_memory segment(open_only, argv[2]); + #else + //-> managed_shared_memory segment(open_only, "MySharedMemory"); + //<- + #endif + //-> std::pair res; diff --git a/example/doc_named_mutex.cpp b/example/doc_named_mutex.cpp index 3ff1fa6..7a81810 100644 --- a/example/doc_named_mutex.cpp +++ b/example/doc_named_mutex.cpp @@ -15,15 +15,63 @@ #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> + int main () { using namespace boost::interprocess; try{ - - //Open or create the named mutex - named_mutex mutex(open_or_create, "fstream_named_mutex"); + struct file_remove + { + //<- + #if 1 + file_remove() { std::remove(test::get_process_id_name()); } + ~file_remove(){ std::remove(test::get_process_id_name()); } + #else + //-> + file_remove() { std::remove("file_name"); } + ~file_remove(){ std::remove("file_name"); } + //<- + #endif + //-> + } file_remover; + struct mutex_remove + { + //<- + #if 1 + mutex_remove() { named_mutex::remove(test::get_process_id_name()); } + ~mutex_remove(){ named_mutex::remove(test::get_process_id_name()); } + #else + //-> + mutex_remove() { named_mutex::remove("fstream_named_mutex"); } + ~mutex_remove(){ named_mutex::remove("fstream_named_mutex"); } + //<- + #endif + //-> + } remover; + //Open or create the named mutex + //<- + #if 1 + named_mutex mutex(open_or_create, test::get_process_id_name()); + #else + //-> + named_mutex mutex(open_or_create, "fstream_named_mutex"); + //<- + #endif + //-> + + //<- + #if 1 + std::ofstream file(test::get_process_id_name()); + #else + //-> std::ofstream file("file_name"); + //<- + #endif + //-> for(int i = 0; i < 10; ++i){ @@ -37,13 +85,9 @@ int main () } } catch(interprocess_exception &ex){ - named_mutex::remove("fstream_named_mutex"); - std::remove("file_name"); std::cout << ex.what() << std::endl; return 1; } - named_mutex::remove("fstream_named_mutex"); - std::remove("file_name"); return 0; } //] diff --git a/example/doc_node_allocator.cpp b/example/doc_node_allocator.cpp index 68087a0..25f8957 100644 --- a/example/doc_node_allocator.cpp +++ b/example/doc_node_allocator.cpp @@ -13,22 +13,44 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only, + test::get_process_id_name(), //segment name + 65536); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", //segment name 65536); + //<- + #endif + //-> //Create a node_allocator that allocates ints from the managed segment //The number of chunks per segment is the default value diff --git a/example/doc_offset_ptr.cpp b/example/doc_offset_ptr.cpp index 8931177..3e3e3a9 100644 --- a/example/doc_offset_ptr.cpp +++ b/example/doc_offset_ptr.cpp @@ -12,6 +12,9 @@ //[doc_offset_ptr #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -25,16 +28,35 @@ struct list_node int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; - managed_shared_memory segment( - create_only, - "MySharedMemory", //segment name - 65536); //segment size in bytes + //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only, + test::get_process_id_name(), //segment name + 65536); + #else + //-> + managed_shared_memory segment(create_only, + "MySharedMemory", //segment name + 65536); + //<- + #endif + //-> //Create linked list with 10 nodes in shared memory offset_ptr prev = 0, current, first; diff --git a/example/doc_private_adaptive_pool.cpp b/example/doc_private_adaptive_pool.cpp index 38303ea..433c96e 100644 --- a/example/doc_private_adaptive_pool.cpp +++ b/example/doc_private_adaptive_pool.cpp @@ -13,22 +13,44 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only, + test::get_process_id_name(), //segment name + 65536); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", //segment name 65536); + //<- + #endif + //-> //Create a private_adaptive_pool that allocates ints from the managed segment //The number of chunks per segment is the default value diff --git a/example/doc_private_node_allocator.cpp b/example/doc_private_node_allocator.cpp index bbb7648..fb775d6 100644 --- a/example/doc_private_node_allocator.cpp +++ b/example/doc_private_node_allocator.cpp @@ -13,22 +13,44 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory + //<- + #if 1 + managed_shared_memory segment(create_only, + test::get_process_id_name(), //segment name + 65536); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", //segment name 65536); + //<- + #endif + //-> //Create a private_node_allocator that allocates ints from the managed segment //The number of chunks per segment is the default value diff --git a/example/doc_scoped_ptr.cpp b/example/doc_scoped_ptr.cpp index d4a577e..ba6ca0c 100644 --- a/example/doc_scoped_ptr.cpp +++ b/example/doc_scoped_ptr.cpp @@ -12,6 +12,9 @@ //[doc_scoped_ptr #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -48,13 +51,30 @@ int main () { //Create shared memory //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; + //<- + #if 1 + managed_shared_memory shmem(create_only, test::get_process_id_name(), 10000); + #else + //-> managed_shared_memory shmem(create_only, "MySharedMemory", 10000); + //<- + #endif + //-> //In the first try, there will be no exceptions //in the second try we will throw an exception diff --git a/example/doc_shared_memory.cpp b/example/doc_shared_memory.cpp index 053c031..8798b91 100644 --- a/example/doc_shared_memory.cpp +++ b/example/doc_shared_memory.cpp @@ -14,6 +14,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> int main(int argc, char *argv[]) { @@ -23,12 +26,29 @@ int main(int argc, char *argv[]) //Remove shared memory on construction and destruction struct shm_remove { - shm_remove() { shared_memory_object::remove("MySharedMemory"); } - ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create a shared memory object. + //<- + #if 1 + shared_memory_object shm (create_only, test::get_process_id_name(), read_write); + #else + //-> shared_memory_object shm (create_only, "MySharedMemory", read_write); + //<- + #endif + //-> //Set size shm.truncate(1000); @@ -40,13 +60,24 @@ int main(int argc, char *argv[]) std::memset(region.get_address(), 1, region.get_size()); //Launch child process - std::string s(argv[0]); s += " child"; + std::string s(argv[0]); s += " child "; + //<- + s += test::get_process_id_name(); + //-> if(0 != std::system(s.c_str())) return 1; } else{ //Open already created shared memory object. + //<- + #if 1 + shared_memory_object shm (open_only, argv[2], read_only); + #else + //-> shared_memory_object shm (open_only, "MySharedMemory", read_only); + //<- + #endif + //-> //Map the whole shared memory in this process mapped_region region(shm, read_only); diff --git a/example/doc_shared_ptr.cpp b/example/doc_shared_ptr.cpp index 3f41829..6683b49 100644 --- a/example/doc_shared_ptr.cpp +++ b/example/doc_shared_ptr.cpp @@ -16,6 +16,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -46,9 +49,30 @@ struct shared_ptr_owner int main () { //Destroy any previous file with the name to be used. - file_mapping::remove("MyMappedFile"); + struct file_remove { + //<- + #if 1 + file_remove() { file_mapping::remove(test::get_process_id_name()); } + ~file_remove(){ file_mapping::remove(test::get_process_id_name()); } + #else + //-> + file_remove() { file_mapping::remove("MyMappedFile"); } + ~file_remove(){ file_mapping::remove("MyMappedFile"); } + //<- + #endif + //-> + } remover; + { + //<- + #if 1 + managed_mapped_file file(create_only, test::get_process_id_name(), 4096); + #else + //-> managed_mapped_file file(create_only, "MyMappedFile", 4096); + //<- + #endif + //-> //Construct the shared type in the file and //pass ownership to this local shared pointer @@ -77,7 +101,16 @@ int main () } { //Reopen the mapped file and find again all owners + //<- + #if 1 + managed_mapped_file file(open_only, test::get_process_id_name()); + #else + //-> managed_mapped_file file(open_only, "MyMappedFile"); + //<- + #endif + //-> + shared_ptr_owner *owner1 = file.find("owner1").first; shared_ptr_owner *owner2 = file.find("owner2").first; assert(owner1 && owner2); @@ -113,7 +146,6 @@ int main () //The reference count will be deallocated when all weak pointers //disappear. After that, the file is unmapped. } - file_mapping::remove("MyMappedFile"); return 0; } //] diff --git a/example/doc_shared_ptr_explicit.cpp b/example/doc_shared_ptr_explicit.cpp index d1d97c7..9b6fa41 100644 --- a/example/doc_shared_ptr_explicit.cpp +++ b/example/doc_shared_ptr_explicit.cpp @@ -17,6 +17,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -32,13 +35,30 @@ typedef shared_ptr my_shared_ptr; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; + //<- + #if 1 + managed_shared_memory segment(create_only, test::get_process_id_name(), 4096); + #else + //-> managed_shared_memory segment(create_only, "MySharedMemory", 4096); + //<- + #endif + //-> //Create a shared pointer in shared memory //pointing to a newly created object in the segment diff --git a/example/doc_spawn_vector.cpp b/example/doc_spawn_vector.cpp index 6ec0789..6e286be 100644 --- a/example/doc_spawn_vector.cpp +++ b/example/doc_spawn_vector.cpp @@ -15,6 +15,9 @@ #include #include #include //std::system +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -33,12 +36,29 @@ int main(int argc, char *argv[]) //Remove shared memory on construction and destruction struct shm_remove { - shm_remove() { shared_memory_object::remove("MySharedMemory"); } - ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create a new segment with given name and size - managed_shared_memory segment(create_only ,"MySharedMemory", 65536); + //<- + #if 1 + managed_shared_memory segment(create_only, test::get_process_id_name(), 65536); + #else + //-> + managed_shared_memory segment(create_only, "MySharedMemory", 65536); + //<- + #endif + //-> //Initialize shared memory STL-compatible allocator const ShmemAllocator alloc_inst (segment.get_segment_manager()); @@ -50,7 +70,10 @@ int main(int argc, char *argv[]) myvector->push_back(i); //Launch child process - std::string s(argv[0]); s += " child"; + std::string s(argv[0]); s += " child "; + //<- + s += test::get_process_id_name(); + //-> if(0 != std::system(s.c_str())) return 1; @@ -60,7 +83,15 @@ int main(int argc, char *argv[]) } else{ //Child process //Open the managed segment + //<- + #if 1 + managed_shared_memory segment(open_only, argv[2]); + #else + //-> managed_shared_memory segment(open_only, "MySharedMemory"); + //<- + #endif + //-> //Find the vector using the c-string name MyVector *myvector = segment.find("MyVector").first; diff --git a/example/doc_unique_ptr.cpp b/example/doc_unique_ptr.cpp index 9506297..07fd435 100644 --- a/example/doc_unique_ptr.cpp +++ b/example/doc_unique_ptr.cpp @@ -18,6 +18,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -48,9 +51,30 @@ typedef list int main () { //Destroy any previous file with the name to be used. - file_mapping::remove("MyMappedFile"); + struct file_remove { + //<- + #if 1 + file_remove() { file_mapping::remove(test::get_process_id_name()); } + ~file_remove(){ file_mapping::remove(test::get_process_id_name()); } + #else + //-> + file_remove() { file_mapping::remove("MyMappedFile"); } + ~file_remove(){ file_mapping::remove("MyMappedFile"); } + //<- + #endif + //-> + } remover; + { + //<- + #if 1 + managed_mapped_file file(create_only, test::get_process_id_name(), 65536); + #else + //-> managed_mapped_file file(create_only, "MyMappedFile", 65536); + //<- + #endif + //-> //Construct an object in the file and //pass ownership to this local unique pointer @@ -98,7 +122,16 @@ int main () } { //Reopen the mapped file and find again the list + //<- + #if 1 + managed_mapped_file file(open_only, test::get_process_id_name()); + #else + //-> managed_mapped_file file(open_only, "MyMappedFile"); + //<- + #endif + //-> + unique_ptr_list_t *unique_list = file.find("unique list").first; assert(unique_list); @@ -112,7 +145,6 @@ int main () //Now destroy the list. All elements will be automatically deallocated. file.destroy_ptr(unique_list); } - file_mapping::remove("MyMappedFile"); return 0; } //] diff --git a/example/doc_unordered_map.cpp b/example/doc_unordered_map.cpp index 03e289f..c869b13 100644 --- a/example/doc_unordered_map.cpp +++ b/example/doc_unordered_map.cpp @@ -16,19 +16,39 @@ #include //boost::unordered_map #include //std::equal_to #include //boost::hash +//<- +#include "../test/get_process_id_name.hpp" +//-> int main () { using namespace boost::interprocess; //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; //Create shared memory - managed_shared_memory segment(create_only ,"MySharedMemory" ,65536); + //<- + #if 1 + managed_shared_memory segment(create_only, test::get_process_id_name(), 65536); + #else + //-> + managed_shared_memory segment(create_only, "MySharedMemory", 65536); + //<- + #endif + //-> //Note that unordered_map's value_type is std::pair, //so the allocator must allocate that pair. diff --git a/example/doc_vectorstream.cpp b/example/doc_vectorstream.cpp index f0021f6..0478e93 100644 --- a/example/doc_vectorstream.cpp +++ b/example/doc_vectorstream.cpp @@ -16,6 +16,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> using namespace boost::interprocess; @@ -31,16 +34,36 @@ typedef basic_vectorstream MyVectorStream; int main () { //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; + //<- + #if 1 + managed_shared_memory segment( + create_only, + test::get_process_id_name(), //segment name + 65536); //segment size in bytes + #else + //-> managed_shared_memory segment( create_only, "MySharedMemory", //segment name 65536); //segment size in bytes + //<- + #endif + //-> //Construct shared memory vector MyVector *myvector = diff --git a/example/doc_where_allocate.cpp b/example/doc_where_allocate.cpp index 570de8e..a5bfabd 100644 --- a/example/doc_where_allocate.cpp +++ b/example/doc_where_allocate.cpp @@ -14,6 +14,9 @@ #include #include #include +//<- +#include "../test/get_process_id_name.hpp" +//-> int main () { @@ -30,13 +33,30 @@ int main () //Open shared memory //Remove shared memory on construction and destruction - struct shm_destroy + struct shm_remove { - shm_destroy() { shared_memory_object::remove("MySharedMemory"); } - ~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #if 1 + shm_remove() { shared_memory_object::remove(test::get_process_id_name()); } + ~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); } + #else + //-> + shm_remove() { shared_memory_object::remove("MySharedMemory"); } + ~shm_remove(){ shared_memory_object::remove("MySharedMemory"); } + //<- + #endif + //-> } remover; + //<- + #if 1 + managed_shared_memory shm(create_only, test::get_process_id_name(), 10000); + #else + //-> managed_shared_memory shm(create_only, "MySharedMemory", 10000); + //<- + #endif + //-> //Create allocators CharAllocator charallocator (shm.get_segment_manager()); diff --git a/example/doc_windows_shared_memory.cpp b/example/doc_windows_shared_memory.cpp index 28da11e..ccd9c22 100644 --- a/example/doc_windows_shared_memory.cpp +++ b/example/doc_windows_shared_memory.cpp @@ -24,7 +24,15 @@ int main(int argc, char *argv[]) if(argc == 1){ //Parent process //Create a native windows shared memory object. + //<- + #if 1 + windows_shared_memory shm (create_only, test::get_process_id_name(), read_write, 1000); + #else + //-> windows_shared_memory shm (create_only, "MySharedMemory", read_write, 1000); + //<- + #endif + //-> //Map the whole shared memory in this process mapped_region region(shm, read_write); @@ -33,14 +41,25 @@ int main(int argc, char *argv[]) std::memset(region.get_address(), 1, region.get_size()); //Launch child process - std::string s(argv[0]); s += " child"; + std::string s(argv[0]); s += " child "; + //<- + s += test::get_process_id_name(); + //-> if(0 != std::system(s.c_str())) return 1; //windows_shared_memory is destroyed when the last attached process dies... } else{ //Open already created shared memory object. + //<- + #if 1 + windows_shared_memory shm (open_only, test::get_process_id_name(), read_only); + #else + //-> windows_shared_memory shm (open_only, "MySharedMemory", read_only); + //<- + #endif + //-> //Map the whole shared memory in this process mapped_region region(shm, read_only); diff --git a/proj/vc7ide/Interprocess.sln b/proj/vc7ide/Interprocess.sln index dfbe26e..c13c8ef 100644 --- a/proj/vc7ide/Interprocess.sln +++ b/proj/vc7ide/Interprocess.sln @@ -1,136 +1,4 @@ Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionA", "doc_named_conditionA.vcproj", "{58EB1CB3-1354-364E-12F2-154356612054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionB", "doc_named_conditionB.vcproj", "{58181CB3-5134-634E-12F2-155435622054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}" ProjectSection(ProjectDependencies) = postProject EndProjectSection @@ -451,138 +319,6 @@ Global GlobalSection(ProjectDependencies) = postSolution EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution - {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32 - {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32 - {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32 - {5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32 - {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32 - {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32 - {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32 - {5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32 - {5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32 - {5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32 - {5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32 - {5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32 - {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32 - {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32 - {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32 - {4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32 - {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32 - {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32 - {58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32 - {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32 - {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32 - {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32 - {5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32 - {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32 - {58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32 - {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32 - {58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32 - {58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32 - {58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32 - {58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32 - {58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32 - {58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32 - {58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32 - {58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32 - {58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32 - {58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32 - {58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32 - {58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32 - {58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32 - {5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32 - {5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32 - {5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32 - {5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32 - {58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32 - {58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32 - {58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32 - {58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32 - {58EB1CB3-1354-364E-12F2-154356612054}.Debug.ActiveCfg = Debug|Win32 - {58EB1CB3-1354-364E-12F2-154356612054}.Debug.Build.0 = Debug|Win32 - {58EB1CB3-1354-364E-12F2-154356612054}.Release.ActiveCfg = Release|Win32 - {58EB1CB3-1354-364E-12F2-154356612054}.Release.Build.0 = Release|Win32 - {58181CB3-5134-634E-12F2-155435622054}.Debug.ActiveCfg = Debug|Win32 - {58181CB3-5134-634E-12F2-155435622054}.Debug.Build.0 = Debug|Win32 - {58181CB3-5134-634E-12F2-155435622054}.Release.ActiveCfg = Release|Win32 - {58181CB3-5134-634E-12F2-155435622054}.Release.Build.0 = Release|Win32 - {5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32 - {5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32 - {5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32 - {5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32 - {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32 - {58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32 - {58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32 - {58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32 - {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32 - {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32 - {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32 - {48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32 - {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32 - {5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32 - {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32 - {5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32 - {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32 - {5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32 - {5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32 - {5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32 - {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32 - {51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32 - {51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32 - {51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32 - {5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32 - {5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32 - {5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32 - {5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32 - {58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32 - {571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32 - {571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32 - {571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32 - {571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32 - {58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32 - {58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32 - {58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32 - {58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32 - {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32 - {588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32 - {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32 - {588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32 - {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32 - {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32 - {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32 - {51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32 - {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32 - {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32 - {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32 - {58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32 - {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32 - {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32 - {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32 - {5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32 - {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32 - {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32 - {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32 - {58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32 {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32 {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32 {59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32