├── .ci.cmake ├── .clang-format ├── .clang-tidy ├── .docs.cmake ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ ├── android-ndk.yml │ ├── documentation.yml │ ├── installability.yml │ ├── make_release.yml │ ├── programs.yml │ ├── unittests_linux.yml │ ├── unittests_macos.yml │ └── unittests_windows.yml ├── .gitmodules ├── .quickcpplib ├── Build.md ├── CMakeLists.txt ├── CTestConfig.cmake ├── Doxyfile ├── Licence.txt ├── Notes.md ├── Readme.md ├── attic ├── .travis.yml ├── Readme.md ├── appveyor.yml ├── build │ ├── Jamfile.v2 │ ├── afio.vcxproj │ └── afio_standalone.vcxproj ├── clang-reformat.sh ├── detail │ ├── SpookyV2.cpp │ └── SpookyV2.h ├── doc │ ├── Jamfile.v2 │ ├── Readme.txt │ ├── acknowledgments.qbk │ ├── advanced_topics.qbk │ ├── afio.qbk │ ├── benchmarks.xlsx │ ├── compiling.qbk │ ├── copyright_block.qbk │ ├── design_rationale.qbk │ ├── disqus_comments.html │ ├── disqus_identifiers │ │ ├── async_close.html │ │ ├── async_dir_2_absolute.html │ │ ├── async_dir_3_relative.html │ │ ├── async_enumerate_6_glob_first.html │ │ ├── async_enumerate_6_maxitems_first.html │ │ ├── async_enumerate_6_metadata_first.html │ │ ├── async_extents.html │ │ ├── async_file_2_absolute.html │ │ ├── async_file_3_relative.html │ │ ├── async_op_flags.html │ │ ├── async_read_3_length_deducing.html │ │ ├── async_read_4_length_specifying.html │ │ ├── async_rmdir_2_absolute.html │ │ ├── async_rmdir_3_relative.html │ │ ├── async_rmfile_2_absolute.html │ │ ├── async_rmfile_3_relative.html │ │ ├── async_rmsymlink_2_absolute.html │ │ ├── async_rmsymlink_3_relative.html │ │ ├── async_statfs.html │ │ ├── async_symlink_3_absolute.html │ │ ├── async_symlink_4_relative.html │ │ ├── async_sync.html │ │ ├── async_truncate.html │ │ ├── async_write_3_length_deducing.html │ │ ├── async_write_4_length_specifying.html │ │ ├── async_zero.html │ │ ├── atomic_logging.html │ │ ├── atomic_relink.html │ │ ├── boost_afio_validate_inputs.html │ │ ├── close_1_batch.html │ │ ├── close_1_throwing.html │ │ ├── close_2_non_throwing.html │ │ ├── compilation.html │ │ ├── complete_async_op_2_errored.html │ │ ├── complete_async_op_3_normal.html │ │ ├── current_dispatcher.html │ │ ├── current_dispatcher_guard.html │ │ ├── depends.html │ │ ├── design_rationale.html │ │ ├── dir_1_batch.html │ │ ├── dir_2_absolute_throwing.html │ │ ├── dir_3_absolute_non_throwing.html │ │ ├── dir_3_relative_throwing.html │ │ ├── dir_4_relative_non_throwing.html │ │ ├── directory_entry.html │ │ ├── directory_entry_hash.html │ │ ├── direntry.html │ │ ├── dispatcher.html │ │ ├── enqueued_task.html │ │ ├── enqueued_task_r___.html │ │ ├── enqueued_task_void___.html │ │ ├── enumerate_1_batch.html │ │ ├── enumerate_6_glob_first_throwing.html │ │ ├── enumerate_6_max_items_first_throwing.html │ │ ├── enumerate_6_metadata_first_throwing.html │ │ ├── enumerate_7_glob_first_non_throwing.html │ │ ├── enumerate_7_max_items_first_non_throwing.html │ │ ├── enumerate_7_metadata_first_non_throwing.html │ │ ├── enumerate_req.html │ │ ├── extents_1_batch.html │ │ ├── extents_1_throwing.html │ │ ├── extents_2_non_throwing.html │ │ ├── file_1_batch.html │ │ ├── file_2_absolute_throwing.html │ │ ├── file_3_absolute_non_throwing.html │ │ ├── file_3_relative_throwing.html │ │ ├── file_4_relative_non_throwing.html │ │ ├── file_buffer_default_size.html │ │ ├── file_concat.html │ │ ├── file_flags.html │ │ ├── filesystem_races.html │ │ ├── filter.html │ │ ├── from_hex_string.html │ │ ├── fs_metadata_flags.html │ │ ├── future.html │ │ ├── future_void_.html │ │ ├── handle.html │ │ ├── handle_mapped_file.html │ │ ├── hello_world.html │ │ ├── introduction.html │ │ ├── io_req.html │ │ ├── io_req_constt_.html │ │ ├── io_req_constvoid_.html │ │ ├── io_req_void_.html │ │ ├── is_future.html │ │ ├── is_future_-future_-t-_.html │ │ ├── link.html │ │ ├── lock_req.html │ │ ├── make_dispatcher.html │ │ ├── make_io_req_3_length_deducing.html │ │ ├── make_io_req_4_length_specifying.html │ │ ├── metadata_flags.html │ │ ├── normalise_path.html │ │ ├── open_states.html │ │ ├── overview.html │ │ ├── page_sizes.html │ │ ├── path.html │ │ ├── path_direct.html │ │ ├── path_hash.html │ │ ├── path_make_absolute.html │ │ ├── path_req.html │ │ ├── path_req_absolute.html │ │ ├── path_req_relative.html │ │ ├── process_threadpool.html │ │ ├── random_fill.html │ │ ├── random_string.html │ │ ├── read_1_batch.html │ │ ├── read_3_length_deducing_throwing.html │ │ ├── read_4_length_deducing_non_throwing.html │ │ ├── read_4_length_specifying_throwing.html │ │ ├── read_5_length_specifying_non_throwing.html │ │ ├── rmdir_1_batch.html │ │ ├── rmdir_2_absolute_throwing.html │ │ ├── rmdir_3_absolute_non_throwing.html │ │ ├── rmdir_3_relative_throwing.html │ │ ├── rmdir_4_relative_non_throwing.html │ │ ├── rmfile_1_batch.html │ │ ├── rmfile_2_absolute_throwing.html │ │ ├── rmfile_3_absolute_non_throwing.html │ │ ├── rmfile_3_relative_throwing.html │ │ ├── rmfile_4_relative_non_throwing.html │ │ ├── rmsymlink_1_batch.html │ │ ├── rmsymlink_2_absolute_throwing.html │ │ ├── rmsymlink_3_absolute_non_throwing.html │ │ ├── rmsymlink_3_relative_throwing.html │ │ ├── rmsymlink_4_relative_non_throwing.html │ │ ├── so_what.html │ │ ├── stat_t.html │ │ ├── statfs_2_batch.html │ │ ├── statfs_2_throwing.html │ │ ├── statfs_3_nonthrowing.html │ │ ├── statfs_t.html │ │ ├── statfs_t_f_flags_t.html │ │ ├── std_thread_pool.html │ │ ├── std_thread_pool_worker.html │ │ ├── symlink_2_batch.html │ │ ├── symlink_3_absolute_throwing.html │ │ ├── symlink_4_absolute_non_throwing.html │ │ ├── symlink_4_relative_throwing.html │ │ ├── symlink_5_relative_non_throwing.html │ │ ├── sync_1_batch.html │ │ ├── sync_1_throwing.html │ │ ├── sync_2_non_throwing.html │ │ ├── target.html │ │ ├── thread_source.html │ │ ├── to_asio_buffers_1_asio_const_buffer.html │ │ ├── to_asio_buffers_1_asio_mutable_buffer.html │ │ ├── to_asio_buffers_1_c_arrays.html │ │ ├── to_asio_buffers_1_const_c_arrays.html │ │ ├── to_asio_buffers_1_const_trivial_and_container_types.html │ │ ├── to_asio_buffers_1_trivial_and_container_types.html │ │ ├── to_asio_buffers_2_buffer.html │ │ ├── to_asio_buffers_2_buffer_of_t.html │ │ ├── to_asio_buffers_2_const_buffer_of_t.html │ │ ├── to_hex_string.html │ │ ├── truncate_2_batch.html │ │ ├── truncate_2_throwing.html │ │ ├── truncate_3_non_throwing.html │ │ ├── type.html │ │ ├── unlink.html │ │ ├── utils_page_allocator.html │ │ ├── utils_page_allocator_-void-_.html │ │ ├── utils_page_allocator_rebind.html │ │ ├── utils_secded_ecc.html │ │ ├── verify_status.html │ │ ├── write_1_batch.html │ │ ├── write_3_length_deducing_throwing.html │ │ ├── write_4_length_deducing_non_throwing.html │ │ ├── write_4_length_specifying_throwing.html │ │ ├── write_5_length_specifying_non_throwing.html │ │ ├── zero_2_batch.html │ │ ├── zero_2_throwing.html │ │ └── zero_3_non_throwing.html │ ├── doxy │ │ ├── Doxyfile │ │ ├── doxygen_enhance.py │ │ ├── doxygen_input │ │ │ ├── doxygen_footer.html │ │ │ ├── doxygen_header.html │ │ │ ├── groups │ │ │ │ └── groups.hpp │ │ │ └── pages │ │ │ │ └── doxygen_mainpage.hpp │ │ └── make_documentation.bat │ ├── doxygen_xml2qbk.patch │ ├── generated │ │ ├── class_current_dispatcher_guard.qbk │ │ ├── class_directory_entry.qbk │ │ ├── class_dispatcher.qbk │ │ ├── class_enqueued_task.qbk │ │ ├── class_enqueued_task_3_01_r_07_08_4.qbk │ │ ├── class_enqueued_task_3_01void_07_08_4.qbk │ │ ├── class_future.qbk │ │ ├── class_future_3_01void_01_4.qbk │ │ ├── class_handle.qbk │ │ ├── class_path.qbk │ │ ├── class_std_thread_pool.qbk │ │ ├── class_std_thread_pool_1_1worker.qbk │ │ ├── class_thread_source.qbk │ │ ├── class_utils_1_1page_allocator.qbk │ │ ├── class_utils_1_1page_allocator_3_01void_01_4.qbk │ │ ├── class_utils_1_1secded_ecc.qbk │ │ ├── group_async_file_io_dispatcher.qbk │ │ ├── group_async_io_handle__ops.qbk │ │ ├── group_async_op_flags.qbk │ │ ├── group_close.qbk │ │ ├── group_dir.qbk │ │ ├── group_dispatcher__barrier.qbk │ │ ├── group_dispatcher__call.qbk │ │ ├── group_dispatcher__completion.qbk │ │ ├── group_dispatcher__depends.qbk │ │ ├── group_dispatcher__enumerate.qbk │ │ ├── group_dispatcher__extents.qbk │ │ ├── group_dispatcher__filedirops.qbk │ │ ├── group_dispatcher__filter.qbk │ │ ├── group_dispatcher__misc.qbk │ │ ├── group_dispatcher__statfs.qbk │ │ ├── group_enumerate.qbk │ │ ├── group_extents.qbk │ │ ├── group_file.qbk │ │ ├── group_file_flags.qbk │ │ ├── group_fs_metadata_flags.qbk │ │ ├── group_io_req.qbk │ │ ├── group_macros.qbk │ │ ├── group_make_io_req.qbk │ │ ├── group_metadata_flags.qbk │ │ ├── group_normalise_path.qbk │ │ ├── group_process_threadpool.qbk │ │ ├── group_read.qbk │ │ ├── group_rmdir.qbk │ │ ├── group_rmfile.qbk │ │ ├── group_rmsymlink.qbk │ │ ├── group_statfs.qbk │ │ ├── group_symlink.qbk │ │ ├── group_sync.qbk │ │ ├── group_to_asio_buffers.qbk │ │ ├── group_truncate.qbk │ │ ├── group_utils.qbk │ │ ├── group_when_all_futures.qbk │ │ ├── group_write.qbk │ │ ├── group_zero.qbk │ │ ├── struct_directory_entry_hash.qbk │ │ ├── struct_enumerate_req.qbk │ │ ├── struct_handle_1_1mapped_file.qbk │ │ ├── struct_io_req.qbk │ │ ├── struct_io_req_3_01const_01_t_01_4.qbk │ │ ├── struct_io_req_3_01const_01void_01_4.qbk │ │ ├── struct_io_req_3_01void_01_4.qbk │ │ ├── struct_is_future.qbk │ │ ├── struct_is_future_3_01future_3_01_t_01_4_01_4.qbk │ │ ├── struct_lock_req.qbk │ │ ├── struct_path_1_1direct.qbk │ │ ├── struct_path_1_1make_absolute.qbk │ │ ├── struct_path_hash.qbk │ │ ├── struct_path_req.qbk │ │ ├── struct_path_req_1_1absolute.qbk │ │ ├── struct_path_req_1_1relative.qbk │ │ ├── struct_stat_t.qbk │ │ ├── struct_statfs_t.qbk │ │ ├── struct_statfs_t_1_1f_flags_t.qbk │ │ ├── struct_utils_1_1page_allocator_1_1rebind.qbk │ │ └── struct_utils_1_1page_allocator_3_01void_01_4_1_1rebind.qbk │ ├── html │ │ └── myboostbook.css │ ├── latencies.xlsx │ ├── make_qbk.py │ ├── power_loss_safety_table.qbk │ ├── quickstart.qbk │ ├── reference.qbk │ ├── release_notes.qbk │ ├── src │ │ └── images │ │ │ ├── afio_latencies.pdf │ │ │ ├── afio_latencies.png │ │ │ ├── afio_latencies_1.2.pdf │ │ │ ├── afio_latencies_1.2.png │ │ │ ├── afio_latencies_1.3.pdf │ │ │ ├── afio_latencies_1.3.png │ │ │ ├── boost.png │ │ │ ├── boost_full.png │ │ │ ├── boost_proposed.png │ │ │ ├── boost_proposed.svg │ │ │ ├── workshop_atomic_updates_insertions.png │ │ │ ├── workshop_atomic_updates_insertions_1.3.png │ │ │ ├── workshop_atomic_updates_lookups.png │ │ │ ├── workshop_atomic_updates_lookups_1.3.png │ │ │ ├── workshop_naive_insertions.png │ │ │ ├── workshop_naive_insertions_1.3.png │ │ │ ├── workshop_naive_lookups.png │ │ │ └── workshop_naive_lookups_1.3.png │ └── workshop.xlsx ├── example │ ├── .clang-format │ ├── adopt_example.cpp │ ├── barrier_example.cpp │ ├── benchmark_asio.cpp │ ├── benchmark_atomic_log.cpp │ ├── benchmark_chained1.cpp │ ├── benchmark_chained2.cpp │ ├── benchmark_latency.cpp │ ├── benchmark_unchained1.cpp │ ├── benchmark_unchained2.cpp │ ├── call_example.cpp │ ├── closure_execution_afio_io_example.cpp │ ├── closure_execution_traditional_io_example.cpp │ ├── completion_example1.cpp │ ├── completion_example2.cpp │ ├── determine_legal_filenames.cpp │ ├── enumerate_example.cpp │ ├── filecopy_example.cpp │ ├── filedir_example.cpp │ ├── filter_example.cpp │ ├── find_in_files_afio.cpp │ ├── find_in_files_iostreams.cpp │ ├── readallof_example.cpp │ ├── readwrite_example.cpp │ ├── readwrite_example_traditional.cpp │ ├── statfs_example.cpp │ ├── workshop_atomic_updates_afio.cpp │ ├── workshop_atomic_updates_afio.ipp │ ├── workshop_benchmark.cpp │ ├── workshop_final_afio.cpp │ ├── workshop_final_afio.ipp │ ├── workshop_naive.cpp │ ├── workshop_naive.ipp │ ├── workshop_naive_afio.cpp │ ├── workshop_naive_afio.ipp │ ├── workshop_naive_async_afio.cpp │ └── workshop_naive_async_afio.ipp ├── include │ └── boost │ │ └── afio │ │ └── v2 │ │ ├── afio.hpp │ │ ├── config.hpp │ │ └── detail │ │ ├── ErrorHandling.hpp │ │ ├── Undoer.hpp │ │ ├── Utility.hpp │ │ ├── impl │ │ ├── ErrorHandling.ipp │ │ ├── afio.ipp │ │ ├── afio_iocp.ipp │ │ └── nt_kernel_stuff.hpp │ │ └── valgrind │ │ ├── helgrind.h │ │ ├── memcheck.h │ │ └── valgrind.h ├── index.html ├── multiabi_alltests_gcc.sh ├── multiabi_alltests_msvc.bat ├── send_to_wandbox.sh ├── src │ └── afio.cpp ├── standalone_alltests_gcc.bat ├── standalone_alltests_gcc.sh ├── standalone_alltests_msvc.bat └── test │ ├── Aligned_Allocator.hpp │ ├── Jamfile.v2 │ ├── afio_pch.hpp │ ├── asan.supp │ ├── blacklist.supp │ ├── drd.supp │ ├── json_encode.py │ ├── memcheck.supp │ ├── msan.supp │ ├── test_all.cpp │ ├── test_all_multiabi.cpp │ ├── test_file_glob.bat │ ├── test_file_glob.sh │ ├── test_functions.hpp │ ├── test_inline_linkage1.cpp │ ├── test_inline_linkage2.cpp │ ├── test_inline_linkage_master.cpp │ ├── tests │ ├── api_error_check.cpp │ ├── async_data_op_req_compilation.cpp │ ├── async_io_adopt_test.cpp │ ├── async_io_barrier_test.cpp │ ├── async_io_enumerate_works.cpp │ ├── async_io_errors_test.cpp │ ├── async_io_lstat_works.cpp │ ├── async_io_pagesize.cpp │ ├── async_io_statfs_test.cpp │ ├── async_io_sync_test.cpp │ ├── async_io_threadpool_test.cpp │ ├── async_io_torture_autoflush_test.cpp │ ├── async_io_torture_direct_sync_test.cpp │ ├── async_io_torture_direct_test.cpp │ ├── async_io_torture_sync_test.cpp │ ├── async_io_torture_test.cpp │ ├── async_io_works_1_autoflush_test.cpp │ ├── async_io_works_1_prime_test.cpp │ ├── async_io_works_1_sync_test.cpp │ ├── async_io_works_1_test.cpp │ ├── async_io_works_64_autoflush_test.cpp │ ├── async_io_works_64_direct_test.cpp │ ├── async_io_works_64_directsync_test.cpp │ ├── async_io_works_64_sync_test.cpp │ ├── async_io_works_64_test.cpp │ ├── async_io_zero_test.cpp │ ├── atomic_log_append_test.cpp │ ├── delete_stability.cpp │ ├── free_functions_test.cpp │ ├── op_container_deduced_compilation.cpp │ ├── path_works.cpp │ └── race_protection_works.cpp │ ├── tsan.supp │ ├── unittests.vcxproj │ └── update_coveralls.sh ├── cmake ├── QuickCppLibBootstrap.cmake ├── brew-llvm.sh ├── headers.cmake ├── interface.cmake ├── sources.cmake ├── tests.cmake ├── toolchain-linux-arm.cmake └── toolchain-linux-libc++.cmake ├── doc └── presentations │ ├── 20150924_CppCon Presentation.pdf │ ├── 20160421_ACCU Presentation.pdf │ ├── 20160922_CppCon Presentation.pdf │ └── videos.txt ├── example ├── .clang-format ├── malloc1.cpp ├── malloc2.cpp ├── map_file.cpp ├── mapped_file.cpp ├── path_view_openat.cpp ├── read_directory.cpp ├── read_entire_file1.cpp ├── read_stats.cpp ├── scatter_write.cpp ├── sparse_array.cpp ├── tls_socket_server.cpp ├── wg21_path_view_benchmark.cpp ├── wg21_path_view_equivalent.cpp └── wrap_tls_socket.cpp ├── graphs ├── benchmark_locking 2x i5 M540 @ 2.53Ghz Win10 4.125Gb bandwidth.xlsx ├── benchmark_locking 4x i7-3770K @ 3.50Ghz Win10 20.075Gb bandwidth.xlsx └── benchmark_locking core count comparison.xlsx ├── include ├── kvstore │ └── kvstore.hpp ├── llfio.hpp └── llfio │ ├── llfio.hpp │ ├── llfio.ixx │ ├── revision.hpp │ ├── v2.0 │ ├── algorithm │ │ ├── clone.hpp │ │ ├── contents.hpp │ │ ├── difference.hpp │ │ ├── handle_adapter │ │ │ ├── cached_parent.hpp │ │ │ ├── combining.hpp │ │ │ └── xor.hpp │ │ ├── reduce.hpp │ │ ├── shared_fs_mutex │ │ │ ├── atomic_append.hpp │ │ │ ├── base.hpp │ │ │ ├── byte_ranges.hpp │ │ │ ├── lock_files.hpp │ │ │ ├── memory_map.hpp │ │ │ └── safe_byte_ranges.hpp │ │ ├── summarize.hpp │ │ ├── traverse.hpp │ │ └── trivial_vector.hpp │ ├── byte_io_handle.hpp │ ├── byte_io_multiplexer.hpp │ ├── byte_socket_handle.hpp │ ├── config.hpp │ ├── deadline.h │ ├── detail │ │ └── impl │ │ │ ├── byte_io_multiplexer.ipp │ │ │ ├── byte_socket_handle.ipp │ │ │ ├── cached_parent_handle_adapter.ipp │ │ │ ├── clone.ipp │ │ │ ├── config.ipp │ │ │ ├── dynamic_thread_pool_group.ipp │ │ │ ├── fast_random_file_handle.ipp │ │ │ ├── getaddrinfo_category.hpp │ │ │ ├── map_handle.ipp │ │ │ ├── path_discovery.ipp │ │ │ ├── path_view.ipp │ │ │ ├── posix │ │ │ ├── byte_io_handle.ipp │ │ │ ├── byte_socket_handle.ipp │ │ │ ├── directory_handle.ipp │ │ │ ├── file_handle.ipp │ │ │ ├── fs_handle.ipp │ │ │ ├── handle.ipp │ │ │ ├── import.hpp │ │ │ ├── lockable_byte_io_handle.ipp │ │ │ ├── map_handle.ipp │ │ │ ├── mapped_file_handle.ipp │ │ │ ├── path_discovery.ipp │ │ │ ├── path_handle.ipp │ │ │ ├── pipe_handle.ipp │ │ │ ├── process_handle.ipp │ │ │ ├── stat.ipp │ │ │ ├── statfs.ipp │ │ │ ├── storage_profile.ipp │ │ │ ├── symlink_handle.ipp │ │ │ ├── test │ │ │ │ └── io_uring_multiplexer.ipp │ │ │ └── utils.ipp │ │ │ ├── reduce.ipp │ │ │ ├── safe_byte_ranges.ipp │ │ │ ├── storage_profile.ipp │ │ │ ├── test │ │ │ └── null_multiplexer.ipp │ │ │ ├── tls_socket_handle.ipp │ │ │ ├── tls_socket_sources │ │ │ └── openssl.ipp │ │ │ ├── traverse.ipp │ │ │ └── windows │ │ │ ├── byte_io_handle.ipp │ │ │ ├── byte_io_multiplexer.ipp │ │ │ ├── byte_socket_handle.ipp │ │ │ ├── directory_handle.ipp │ │ │ ├── file_handle.ipp │ │ │ ├── fs_handle.ipp │ │ │ ├── handle.ipp │ │ │ ├── import.hpp │ │ │ ├── lockable_byte_io_handle.ipp │ │ │ ├── map_handle.ipp │ │ │ ├── mapped_file_handle.ipp │ │ │ ├── path_discovery.ipp │ │ │ ├── path_handle.ipp │ │ │ ├── pipe_handle.ipp │ │ │ ├── process_handle.ipp │ │ │ ├── stat.ipp │ │ │ ├── statfs.ipp │ │ │ ├── storage_profile.ipp │ │ │ ├── symlink_handle.ipp │ │ │ ├── test │ │ │ └── iocp_multiplexer.ipp │ │ │ ├── tls_socket_sources │ │ │ └── schannel.ipp │ │ │ └── utils.ipp │ ├── directory_handle.hpp │ ├── dynamic_thread_pool_group.hpp │ ├── fast_random_file_handle.hpp │ ├── file_handle.hpp │ ├── fs_handle.hpp │ ├── handle.hpp │ ├── llfio.hpp │ ├── lockable_byte_io_handle.hpp │ ├── logging.hpp │ ├── map_handle.hpp │ ├── mapped.hpp │ ├── mapped_file_handle.hpp │ ├── multiplex.hpp │ ├── native_handle_type.hpp │ ├── path_discovery.hpp │ ├── path_handle.hpp │ ├── path_view.hpp │ ├── pipe_handle.hpp │ ├── process_handle.hpp │ ├── stat.hpp │ ├── statfs.hpp │ ├── status_code.hpp │ ├── storage_profile.hpp │ ├── symlink_handle.hpp │ ├── tls_socket_handle.hpp │ └── utils.hpp │ └── version.hpp ├── index.html ├── install_dev_githooks.sh ├── meta └── libraries.json ├── programs ├── CMakeLists.txt ├── benchmark-async │ ├── main.cpp │ └── results.xlsx ├── benchmark-dynamic_thread_pool_group │ └── main.cpp ├── benchmark-io-congestion │ └── main.cpp ├── benchmark-iostreams │ └── main.cpp ├── benchmark-locking │ └── main.cpp ├── collision-check │ ├── CMakeLists.txt │ └── lib.cpp ├── fs-probe │ ├── fs_probe_results.yaml │ ├── fs_probe_results_legacy.yaml │ ├── latencies.xlsx │ └── main.cpp ├── illegal-codepoints │ └── main.cpp └── key-value-store │ ├── Readme.md │ ├── include │ └── key_value_store.hpp │ └── main.cpp ├── reference ├── 11.1.pdf ├── 54d0f0190cf29ca811040c8a.pdf ├── Chidambaram.pdf ├── Error Handling is Ocassionally Correct.html ├── Error Handling is Ocassionally Correct_files │ ├── fig-analysis-cdf.gif │ ├── fig-method-edp.gif │ ├── fig-result-big-legend.gif │ ├── fig-result-big.gif │ ├── fig-result-small-ext3.gif │ ├── fig-result-small-hfsplus.gif │ ├── fig-result-small-jfs.gif │ ├── fig-result-small-nfs.gif │ ├── fig-result-small-reiserfs.gif │ ├── fig-result-small-xfs.gif │ ├── fig-result-zoom.gif │ ├── main.css │ └── new_usenix.jpg ├── Files are hard.html ├── Files are hard_files │ ├── fs_properties.png │ └── program_bugs.png ├── Linux KAIO │ ├── History of Linux KAIO API.pdf │ ├── KAIOUserGuide.htm │ └── linux-kaio.txt ├── iron-sosp05.pdf ├── oopsla2019.pdf ├── osdi14-paper-pillai.pdf ├── popl2020-px86.pdf └── ptso.pdf ├── scripts ├── AddTryItNow.py ├── BuildTimes.py ├── GenJenkinsMatrixDashboard.py ├── JenkinsMatrixToDashboard.py ├── SoakTest.py ├── XMLTidy.py ├── benchmark_locking_matrix.py ├── make_free_functions.py ├── readme_to_html.sh ├── travis_lldb.expect └── xhtml_to_docbook.xsl ├── single-header └── Readme.md ├── src └── llfio.cpp ├── test-packaging └── example.cpp └── test ├── test_kernel_decl.hpp └── tests ├── byte_socket_handle.cpp ├── clone_extents.cpp ├── current_path.cpp ├── directory_handle_create_close ├── existing0 │ └── testdir │ │ └── pin.txt ├── existing1 │ ├── testdir │ │ ├── pin.txt │ │ └── testfile.txt │ └── testfile.txt ├── kernel_directory_handle.cpp.hpp └── runner.cpp ├── directory_handle_enumerate ├── existing │ ├── 0123456789012345678901234567890123456789012345678901234567890123.deleted │ ├── 012345678901234567890123456789012345678901234567890123456789012z.deleted │ ├── dir │ │ └── pin.txt │ └── foo.txt ├── kernel_directory_handle_enumerate.cpp.hpp └── runner.cpp ├── dynamic_thread_pool_group.cpp ├── extended_attributes.cpp ├── fast_random_file_handle.cpp ├── file_handle_create_close ├── existing0 │ └── testfile.txt ├── existing1 │ └── testfile.txt ├── kernel_file_handle.cpp.hpp └── runner.cpp ├── file_handle_lock_unlock.cpp ├── handle_adapter_xor.cpp ├── issue0009.cpp ├── issue0027.cpp ├── issue0028.cpp ├── issue0073.cpp ├── issue0102.cpp ├── issue0113.cpp ├── large_pages.cpp ├── map_handle_cache.cpp ├── map_handle_create_close ├── kernel_map_handle.cpp.hpp └── runner.cpp ├── mapped.cpp ├── mapped_file_handle.cpp ├── path_discovery.cpp ├── path_view.cpp ├── pipe_handle.cpp ├── process_handle.cpp ├── reduce.cpp ├── section_handle_create_close ├── kernel_section_handle.cpp.hpp └── runner.cpp ├── shared_fs_mutex.cpp ├── statfs.cpp ├── symlink_handle_create_close ├── existing0 │ └── testfile.txt ├── existing1 │ ├── testfile.txt │ └── testlink ├── kernel_symlink_handle.cpp.hpp └── runner.cpp ├── tls_socket_handle.cpp ├── traverse.cpp ├── trivial_vector.cpp └── utils.cpp /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | AccessModifierOffset: -2 4 | ConstructorInitializerIndentWidth: 4 5 | AlignEscapedNewlinesLeft: false 6 | AlignTrailingComments: true 7 | AllowAllParametersOfDeclarationOnNextLine: true 8 | AllowShortBlocksOnASingleLine: false 9 | AllowShortIfStatementsOnASingleLine: false 10 | AllowShortLoopsOnASingleLine: false 11 | AllowShortFunctionsOnASingleLine: Inline 12 | AlwaysBreakTemplateDeclarations: false 13 | AlwaysBreakBeforeMultilineStrings: false 14 | BreakBeforeBinaryOperators: None 15 | BreakBeforeBraces: Allman 16 | BreakBeforeTernaryOperators: false 17 | BreakConstructorInitializersBeforeComma: true 18 | BinPackParameters: true 19 | ColumnLimit: 160 20 | CommentPragmas: '^!<' 21 | ConstructorInitializerAllOnOneLineOrOnePerLine: false 22 | ContinuationIndentWidth: 0 23 | Cpp11BracedListStyle: true 24 | DerivePointerAlignment: false 25 | DisableFormat: false 26 | ExperimentalAutoDetectBinPacking: false 27 | ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] 28 | IndentCaseLabels: false 29 | IndentFunctionDeclarationAfterType: false 30 | IndentWidth: 2 31 | IndentWrappedFunctionNames: false 32 | MaxEmptyLinesToKeep: 2 33 | KeepEmptyLinesAtTheStartOfBlocks: true 34 | NamespaceIndentation: All 35 | ObjCSpaceAfterProperty: false 36 | ObjCSpaceBeforeProtocolList: false 37 | PenaltyBreakBeforeFirstCallParameter: 19 38 | PenaltyBreakComment: 300 39 | PenaltyBreakString: 1000 40 | PenaltyBreakFirstLessLess: 120 41 | PenaltyExcessCharacter: 1000000 42 | PenaltyReturnTypeOnItsOwnLine: 60 43 | PointerAlignment: Right 44 | Standard: Cpp11 45 | SpaceAfterCStyleCast: true 46 | SpaceBeforeAssignmentOperators: true 47 | SpaceBeforeParens: Never 48 | SpaceInEmptyParentheses: false 49 | SpacesBeforeTrailingComments: 2 50 | SpacesInParentheses: false 51 | SpacesInAngles: false 52 | SpacesInCStyleCastParentheses: false 53 | SpacesInContainerLiterals: true 54 | TabWidth: 8 55 | UseTab: Never 56 | ... 57 | 58 | -------------------------------------------------------------------------------- /.clang-tidy: -------------------------------------------------------------------------------- 1 | --- 2 | Checks: '*,-llvm-header-guard,-google-build-using-namespace,-google-runtime-int,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-modernize-unary-static-assert,-fuchsia-*,-llvm-namespace-comment,-hicpp-no-array-decay,-cppcoreguidelines-pro-type-union-access,-hicpp-use-override,-modernize-use-override,-google-default-arguments,-google-runtime-references,-cppcoreguidelines-pro-type-reinterpret-cast,-hicpp-vararg,-cppcoreguidelines-pro-bounds-pointer-arithmetic,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-constant-array-index,-cppcoreguidelines-pro-type-const-cast' 3 | WarningsAsErrors: '' 4 | HeaderFilterRegex: '.*' 5 | AnalyzeTemporaryDtors: true 6 | CheckOptions: 7 | - key: cert-oop11-cpp.UseCERTSemantics 8 | value: '1' 9 | - key: google-readability-braces-around-statements.ShortStatementLines 10 | value: '1' 11 | - key: google-readability-function-size.StatementThreshold 12 | value: '800' 13 | - key: google-readability-namespace-comments.ShortNamespaceLines 14 | value: '10' 15 | - key: google-readability-namespace-comments.SpacesBeforeComments 16 | value: '2' 17 | - key: modernize-loop-convert.MaxCopySize 18 | value: '16' 19 | - key: modernize-loop-convert.MinConfidence 20 | value: reasonable 21 | - key: modernize-loop-convert.NamingStyle 22 | value: CamelCase 23 | - key: modernize-pass-by-value.IncludeStyle 24 | value: llvm 25 | - key: modernize-replace-auto-ptr.IncludeStyle 26 | value: llvm 27 | - key: modernize-use-nullptr.NullMacros 28 | value: 'NULL' 29 | ... 30 | 31 | -------------------------------------------------------------------------------- /.docs.cmake: -------------------------------------------------------------------------------- 1 | # CTest script for a CI to submit to CDash a documentation generation run 2 | cmake_minimum_required(VERSION 3.10 FATAL_ERROR) 3 | include(cmake/QuickCppLibBootstrap.cmake) 4 | include(QuickCppLibUtils) 5 | 6 | 7 | CONFIGURE_CTEST_SCRIPT_FOR_CDASH("llfio" "cmake_ci") 8 | ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY}) 9 | include(FindGit) 10 | set(CTEST_GIT_COMMAND "${GIT_EXECUTABLE}") 11 | #checked_execute_process("git reset" 12 | # COMMAND "${GIT_EXECUTABLE}" checkout gh-pages 13 | # COMMAND "${GIT_EXECUTABLE}" reset --hard cc293d14a48bf1ee3fb78743c3ad5cf61d63f3ff 14 | # WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/html" 15 | #) 16 | 17 | ctest_start("Documentation") 18 | ctest_update() 19 | checked_execute_process("git reset" 20 | COMMAND "${GIT_EXECUTABLE}" checkout gh-pages 21 | WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/html" 22 | ) 23 | ctest_configure() 24 | ctest_build(TARGET llfio_docs) 25 | #checked_execute_process("git commit" 26 | # COMMAND "${GIT_EXECUTABLE}" commit -a -m "upd" 27 | # COMMAND "${GIT_EXECUTABLE}" push -f origin gh-pages 28 | # WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc/html" 29 | #) 30 | ctest_submit() 31 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: ned14 2 | -------------------------------------------------------------------------------- /.github/workflows/android-ndk.yml: -------------------------------------------------------------------------------- 1 | name: Build test Android 2 | 3 | on: 4 | push: 5 | branches: 6 | - develop 7 | - master 8 | pull_request: 9 | schedule: 10 | - cron: '0 0 1 * *' 11 | 12 | jobs: 13 | Linux: 14 | name: Android 15 | runs-on: ubuntu-latest 16 | strategy: 17 | fail-fast: false 18 | matrix: 19 | configuration: [error_code, status_code] 20 | env: 21 | NAME: Android-${{ matrix.configuration }} 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | 26 | - name: CMake tests Linux 27 | shell: bash 28 | run: | 29 | export CMAKE_CONFIGURE_OPTIONS="-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake;-DANDROID_PLATFORM=28;-DCMAKE_CXX_STANDARD=20" 30 | if [ "${{ matrix.configuration }}" = "status_code" ]; then 31 | export CMAKE_CONFIGURE_OPTIONS="$CMAKE_CONFIGURE_OPTIONS;-DLLFIO_USE_EXPERIMENTAL_SG14_STATUS_CODE=ON"; 32 | fi 33 | ctest -S .ci.cmake -VV --timeout 900 -DCTEST_DISABLE_TESTING=1 "-DCTEST_CONFIGURE_OPTIONS=$CMAKE_CONFIGURE_OPTIONS"; 34 | -------------------------------------------------------------------------------- /.github/workflows/documentation.yml: -------------------------------------------------------------------------------- 1 | name: Documentation 2 | 3 | on: 4 | push: 5 | branches: 6 | - develop 7 | - master 8 | pull_request: 9 | schedule: 10 | - cron: '0 0 1 * *' 11 | 12 | jobs: 13 | documentation: 14 | name: "Regenerate and publish Documentation" 15 | runs-on: ubuntu-latest 16 | env: 17 | NAME: Documentation 18 | 19 | steps: 20 | - name: Checkout Documentation 21 | uses: actions/checkout@v4 22 | with: 23 | fetch-depth: 0 24 | submodules: recursive 25 | 26 | - name: Regenerate Documentation 27 | shell: bash 28 | run: | 29 | sudo apt-get install -y doxygen graphviz 30 | ctest -S .docs.cmake -V 31 | 32 | - name: Publish Documentation 33 | uses: JamesIves/github-pages-deploy-action@v4 34 | with: 35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 36 | BRANCH: gh-pages 37 | FOLDER: doc/html 38 | CLEAN: true 39 | -------------------------------------------------------------------------------- /.github/workflows/programs.yml: -------------------------------------------------------------------------------- 1 | name: Programs 2 | 3 | on: 4 | push: 5 | branches: 6 | - develop 7 | - master 8 | pull_request: 9 | schedule: 10 | - cron: '0 0 1 * *' 11 | 12 | jobs: 13 | programs: 14 | name: "Programs" 15 | strategy: 16 | fail-fast: false 17 | matrix: 18 | os: [ubuntu-22.04, macos-latest, windows-2019] 19 | env: 20 | NAME: Programs-${{ matrix.os }} 21 | runs-on: ${{ matrix.os }} 22 | 23 | steps: 24 | - uses: actions/checkout@v4 25 | 26 | - name: Build 27 | shell: bash 28 | run: | 29 | cd programs 30 | mkdir build 31 | cd build 32 | cmake .. $CMAKE_CONFIGURE_OPTIONS -DCMAKE_BUILD_TYPE=Release 33 | cmake --build . 34 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "doc/html"] 2 | path = doc/html 3 | url = https://github.com/ned14/llfio.git 4 | branch = gh-pages 5 | fetchRecurseSubmodules = true 6 | ignore = none 7 | # shallow = true 8 | [submodule "include/llfio/ntkernel-error-category"] 9 | path = include/llfio/ntkernel-error-category 10 | url = https://github.com/ned14/ntkernel-error-category.git 11 | branch = master 12 | fetchRecurseSubmodules = true 13 | ignore = untracked 14 | -------------------------------------------------------------------------------- /.quickcpplib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ned14/llfio/06ea607de0346a1d77a807fd37efc2fdfb005de5/.quickcpplib -------------------------------------------------------------------------------- /CTestConfig.cmake: -------------------------------------------------------------------------------- 1 | ## This file should be placed in the root directory of your project. 2 | ## Then modify the CMakeLists.txt file in the root directory of your 3 | ## project to incorporate the testing dashboard. 4 | ## 5 | ## # The following are required to submit to the CDash dashboard: 6 | ## ENABLE_TESTING() 7 | ## INCLUDE(CTest) 8 | 9 | set(CTEST_PROJECT_NAME "LLFIO") 10 | set(CTEST_NIGHTLY_START_TIME "00:00:00 EST") 11 | 12 | set(CTEST_DROP_METHOD "https") 13 | set(CTEST_DROP_SITE "my.cdash.org") 14 | set(CTEST_DROP_LOCATION "/submit.php?project=Boost.AFIO") 15 | set(CTEST_DROP_SITE_CDASH TRUE) 16 | -------------------------------------------------------------------------------- /attic/appveyor.yml: -------------------------------------------------------------------------------- 1 | # version format 2 | version: 2.00.{build}-{branch} 3 | 4 | # branches to build 5 | branches: 6 | # blacklist 7 | except: 8 | - master 9 | - gh-pages 10 | skip_tags: true 11 | 12 | image: Visual Studio 2017 13 | init: 14 | - git config --global core.longpaths true 15 | 16 | clone_folder: c:\boost.llfio 17 | platform: x64 18 | configuration: Release 19 | environment: 20 | JENKINS_NEDPROD_PASSWORD: 21 | secure: 9Bx/dfr0ne9DTgnezRILRuOrPOZ71pVuzWBAscR9vTG9n42gIvNhYVCaCnr6FMa/ 22 | 23 | build_script: 24 | - ctest -S .ci.cmake -V --timeout 300 25 | after_build: 26 | 27 | before_test: 28 | test_script: 29 | after_test: 30 | 31 | on_success: 32 | # - set "NEWNAME=llfio-v2-binaries-win64-%date:~10,4%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%.zip" 33 | - set "NEWNAME=llfio-v2-binaries-win64-%APPVEYOR_REPO_COMMIT%.zip" 34 | - rename llfio-v2.0-binaries-win64.zip %NEWNAME% 35 | - curl -T %NEWNAME% -u jenkins-nedprod:%JENKINS_NEDPROD_PASSWORD% https://dedi6.nedprod.com/static/files/upload/ 36 | on_failure: 37 | on_finish: 38 | - ps: (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path prebuilt\merged_junit_results.xml)) 39 | -------------------------------------------------------------------------------- /attic/clang-reformat.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash -x 2 | find example -name "*.cpp" -exec clang-format-3.6 -i {} ';' 3 | clang-format-3.6 -i include/boost/afio/afio.hpp 4 | #clang-format-3.6 -i include/boost/afio/config.hpp 5 | find include/boost/afio/detail -name "*.hpp" -exec clang-format-3.6 -i {} ';' 6 | find include/boost/afio/detail -name "*.ipp" -exec clang-format-3.6 -i {} ';' 7 | find test -name "*.hpp" -exec clang-format-3.6 -i {} ';' 8 | find test -name "*.cpp" -exec clang-format-3.6 -i {} ';' 9 | 10 | PWD=$(pwd) 11 | find example -name "*.cpp" -exec "$PWD/include/boost/afio/bindlib/scripts/IndentCmacros.py" {} ';' 12 | include/boost/afio/bindlib/scripts/IndentCmacros.py include/boost/afio/afio.hpp 13 | include/boost/afio/bindlib/scripts/IndentCmacros.py include/boost/afio/config.hpp 14 | find include/boost/afio/detail -name "*.hpp" -exec "$PWD/include/boost/afio/bindlib/scripts/IndentCmacros.py" {} ';' 15 | find include/boost/afio/detail -name "*.ipp" -exec "$PWD/include/boost/afio/bindlib/scripts/IndentCmacros.py" {} ';' 16 | find test -name "*.hpp" -exec "$PWD/include/boost/afio/bindlib/scripts/IndentCmacros.py" {} ';' 17 | find test -name "*.cpp" -exec "$PWD/include/boost/afio/bindlib/scripts/IndentCmacros.py" {} ';' 18 | -------------------------------------------------------------------------------- /attic/doc/benchmarks.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ned14/llfio/06ea607de0346a1d77a807fd37efc2fdfb005de5/attic/doc/benchmarks.xlsx -------------------------------------------------------------------------------- /attic/doc/copyright_block.qbk: -------------------------------------------------------------------------------- 1 | [/============================================================================ 2 | Boost.AFIO 3 | 4 | Use, modification and distribution is subject to the Boost Software License, 5 | Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 6 | http://www.boost.org/LICENSE_1_0.txt) 7 | =============================================================================/] 8 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_close.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_dir_2_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_dir_3_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_enumerate_6_glob_first.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_enumerate_6_maxitems_first.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_enumerate_6_metadata_first.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_extents.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_file_2_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_file_3_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_op_flags.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_read_3_length_deducing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_read_4_length_specifying.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmdir_2_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmdir_3_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmfile_2_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmfile_3_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmsymlink_2_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_rmsymlink_3_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_statfs.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_symlink_3_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_symlink_4_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_sync.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_truncate.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_write_3_length_deducing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_write_4_length_specifying.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/async_zero.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/atomic_logging.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/atomic_relink.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/boost_afio_validate_inputs.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/close_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/close_1_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/close_2_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/compilation.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/complete_async_op_2_errored.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/complete_async_op_3_normal.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/current_dispatcher.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/current_dispatcher_guard.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/depends.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/design_rationale.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dir_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dir_2_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dir_3_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dir_3_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dir_4_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/directory_entry.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/directory_entry_hash.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/direntry.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/dispatcher.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enqueued_task.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enqueued_task_r___.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enqueued_task_void___.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_6_glob_first_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_6_max_items_first_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_6_metadata_first_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_7_glob_first_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_7_max_items_first_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_7_metadata_first_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/enumerate_req.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/extents_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/extents_1_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/extents_2_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_2_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_3_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_3_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_4_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_buffer_default_size.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_concat.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/file_flags.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/filesystem_races.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/filter.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/from_hex_string.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/fs_metadata_flags.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/future.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/future_void_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/handle.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/handle_mapped_file.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/hello_world.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/introduction.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/io_req.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/io_req_constt_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/io_req_constvoid_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/io_req_void_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/is_future.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/is_future_-future_-t-_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/link.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/lock_req.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/make_dispatcher.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/make_io_req_3_length_deducing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/make_io_req_4_length_specifying.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/metadata_flags.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/normalise_path.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/open_states.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/overview.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/page_sizes.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_direct.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_hash.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_make_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_req.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_req_absolute.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/path_req_relative.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/process_threadpool.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/random_fill.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/random_string.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/read_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/read_3_length_deducing_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/read_4_length_deducing_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/read_4_length_specifying_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/read_5_length_specifying_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmdir_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmdir_2_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmdir_3_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmdir_3_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmdir_4_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmfile_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmfile_2_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmfile_3_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmfile_3_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmfile_4_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmsymlink_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmsymlink_2_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmsymlink_3_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmsymlink_3_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/rmsymlink_4_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/so_what.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/stat_t.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/statfs_2_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/statfs_2_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/statfs_3_nonthrowing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/statfs_t.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/statfs_t_f_flags_t.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/std_thread_pool.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/std_thread_pool_worker.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/symlink_2_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/symlink_3_absolute_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/symlink_4_absolute_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/symlink_4_relative_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/symlink_5_relative_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/sync_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/sync_1_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/sync_2_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/target.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/thread_source.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_asio_const_buffer.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_asio_mutable_buffer.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_c_arrays.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_const_c_arrays.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_const_trivial_and_container_types.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_1_trivial_and_container_types.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_2_buffer.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_2_buffer_of_t.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_asio_buffers_2_const_buffer_of_t.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/to_hex_string.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/truncate_2_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/truncate_2_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/truncate_3_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/type.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/unlink.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/utils_page_allocator.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/utils_page_allocator_-void-_.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/utils_page_allocator_rebind.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/utils_secded_ecc.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/verify_status.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/write_1_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/write_3_length_deducing_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/write_4_length_deducing_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/write_4_length_specifying_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/write_5_length_specifying_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/zero_2_batch.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/zero_2_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/disqus_identifiers/zero_3_non_throwing.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /attic/doc/doxy/doxygen_enhance.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | # =========================================================================== 4 | # Copyright (c) 2010 Barend Gehrels, Amsterdam, the Netherlands. 5 | # 6 | # Use, modification and distribution is subject to the Boost Software License, 7 | # Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 8 | # http://www.boost.org/LICENSE_1_0.txt)9 9 | # ============================================================================ 10 | 11 | import sys 12 | 13 | args = sys.argv[1:] 14 | if len(args) != 1: 15 | raise SystemExit("Usage: doxygen_enhance ") 16 | 17 | 18 | # 1) set variable for doxygen_contents to be posted 19 | file_in = open(args[0], 'r') 20 | doxygen_contents = file_in.read() 21 | 22 | doxygen_contents = doxygen_contents.replace('Modules', 'Function overview') 23 | doxygen_contents = doxygen_contents.replace('Related Pages', 'Main pages') 24 | doxygen_contents = doxygen_contents.replace('Main Page', 'Introduction') 25 | doxygen_contents = doxygen_contents.replace('
  • Namespaces
  • ', '') 26 | 27 | doxygen_contents = doxygen_contents.replace('

    Modules

    Here is a list of all modules: