2
0
mirror of https://github.com/tribufu/sdk-cpp synced 2025-06-18 13:14:18 +00:00

Add boost and cpprestsdk

This commit is contained in:
2025-05-28 13:59:55 -03:00
parent d3fb88a65d
commit 7079ba75f2
14583 changed files with 3063824 additions and 1 deletions
.gitignore
vendor
boost
LICENSE_1_0.txt
include
boost
accumulators
accumulators.hppaccumulators_fwd.hpp
framework
numeric
statistics.hpp
statistics
statistics_fwd.hpp
algorithm
align.hpp
align
aligned_storage.hppany.hpp
any
archive
archive_exception.hppbasic_archive.hppbasic_binary_iarchive.hppbasic_binary_iprimitive.hppbasic_binary_oarchive.hppbasic_binary_oprimitive.hppbasic_streambuf_locale_saver.hppbasic_text_iarchive.hppbasic_text_iprimitive.hppbasic_text_oarchive.hppbasic_text_oprimitive.hppbasic_xml_archive.hppbasic_xml_iarchive.hppbasic_xml_oarchive.hppbinary_iarchive.hppbinary_iarchive_impl.hppbinary_oarchive.hppbinary_oarchive_impl.hppbinary_wiarchive.hppbinary_woarchive.hppcodecvt_null.hpp
detail
dinkumware.hpp
impl
iterators
polymorphic_binary_iarchive.hpppolymorphic_binary_oarchive.hpppolymorphic_iarchive.hpppolymorphic_oarchive.hpppolymorphic_text_iarchive.hpppolymorphic_text_oarchive.hpppolymorphic_text_wiarchive.hpppolymorphic_text_woarchive.hpppolymorphic_xml_iarchive.hpppolymorphic_xml_oarchive.hpppolymorphic_xml_wiarchive.hpppolymorphic_xml_woarchive.hpptext_iarchive.hpptext_oarchive.hpptext_wiarchive.hpptext_woarchive.hpptmpdir.hppwcslen.hppxml_archive_exception.hppxml_iarchive.hppxml_oarchive.hppxml_wiarchive.hppxml_woarchive.hpp
array.hppasio.hpp
asio
any_completion_executor.hppany_completion_handler.hppany_io_executor.hppappend.hppas_tuple.hppassociated_allocator.hppassociated_cancellation_slot.hppassociated_executor.hppassociated_immediate_executor.hppassociator.hppasync_result.hppawaitable.hppbasic_datagram_socket.hppbasic_deadline_timer.hppbasic_file.hppbasic_io_object.hppbasic_random_access_file.hppbasic_raw_socket.hppbasic_readable_pipe.hppbasic_seq_packet_socket.hppbasic_serial_port.hppbasic_signal_set.hppbasic_socket.hppbasic_socket_acceptor.hppbasic_socket_iostream.hppbasic_socket_streambuf.hppbasic_stream_file.hppbasic_stream_socket.hppbasic_streambuf.hppbasic_streambuf_fwd.hppbasic_waitable_timer.hppbasic_writable_pipe.hppbind_allocator.hppbind_cancellation_slot.hppbind_executor.hppbind_immediate_executor.hppbuffer.hppbuffer_registration.hppbuffered_read_stream.hppbuffered_read_stream_fwd.hppbuffered_stream.hppbuffered_stream_fwd.hppbuffered_write_stream.hppbuffered_write_stream_fwd.hppbuffers_iterator.hppcancel_after.hppcancel_at.hppcancellation_signal.hppcancellation_state.hppcancellation_type.hppco_composed.hppco_spawn.hppcompletion_condition.hppcompose.hppcomposed.hppconfig.hppconnect.hppconnect_pipe.hppconsign.hppcoroutine.hppdeadline_timer.hppdefault_completion_token.hppdefer.hppdeferred.hppdetached.hpp
detail
array.hpparray_fwd.hppassert.hppatomic_count.hppbase_from_cancellation_state.hppbase_from_completion_cond.hppbind_handler.hppblocking_executor_op.hppbuffer_resize_guard.hppbuffer_sequence_adapter.hppbuffered_stream_storage.hppcall_stack.hppchrono.hppchrono_time_traits.hppcompletion_handler.hppcompletion_message.hppcompletion_payload.hppcompletion_payload_handler.hppcomposed_work.hppconcurrency_hint.hppconditionally_enabled_event.hppconditionally_enabled_mutex.hppconfig.hppconsuming_buffers.hppcstddef.hppcstdint.hppdate_time_fwd.hppdeadline_timer_service.hppdependent_type.hppdescriptor_ops.hppdescriptor_read_op.hppdescriptor_write_op.hppdev_poll_reactor.hppepoll_reactor.hppevent.hppeventfd_select_interrupter.hppexception.hppexecutor_function.hppexecutor_op.hppfd_set_adapter.hppfenced_block.hppfunctional.hppfuture.hppglobal.hpphandler_alloc_helpers.hpphandler_cont_helpers.hpphandler_tracking.hpphandler_type_requirements.hpphandler_work.hpphash_map.hpp
impl
initiate_defer.hppinitiate_dispatch.hppinitiate_post.hppinitiation_base.hppio_control.hppio_object_impl.hppio_uring_descriptor_read_at_op.hppio_uring_descriptor_read_op.hppio_uring_descriptor_service.hppio_uring_descriptor_write_at_op.hppio_uring_descriptor_write_op.hppio_uring_file_service.hppio_uring_null_buffers_op.hppio_uring_operation.hppio_uring_service.hppio_uring_socket_accept_op.hppio_uring_socket_connect_op.hppio_uring_socket_recv_op.hppio_uring_socket_recvfrom_op.hppio_uring_socket_recvmsg_op.hppio_uring_socket_send_op.hppio_uring_socket_sendto_op.hppio_uring_socket_service.hppio_uring_socket_service_base.hppio_uring_wait_op.hppis_buffer_sequence.hppis_executor.hppkeyword_tss_ptr.hppkqueue_reactor.hpplimits.hpplocal_free_on_block_exit.hppmemory.hppmutex.hppnon_const_lvalue.hppnoncopyable.hppnull_event.hppnull_fenced_block.hppnull_global.hppnull_mutex.hppnull_reactor.hppnull_signal_blocker.hppnull_socket_service.hppnull_static_mutex.hppnull_thread.hppnull_tss_ptr.hppobject_pool.hppold_win_sdk_compat.hppop_queue.hppoperation.hpppipe_select_interrupter.hpppop_options.hppposix_event.hppposix_fd_set_adapter.hppposix_global.hppposix_mutex.hppposix_serial_port_service.hppposix_signal_blocker.hppposix_static_mutex.hppposix_thread.hppposix_tss_ptr.hpppush_options.hppreactive_descriptor_service.hppreactive_null_buffers_op.hppreactive_socket_accept_op.hppreactive_socket_connect_op.hppreactive_socket_recv_op.hppreactive_socket_recvfrom_op.hppreactive_socket_recvmsg_op.hppreactive_socket_send_op.hppreactive_socket_sendto_op.hppreactive_socket_service.hppreactive_socket_service_base.hppreactive_wait_op.hppreactor.hppreactor_op.hppreactor_op_queue.hpprecycling_allocator.hppregex_fwd.hppresolve_endpoint_op.hppresolve_op.hppresolve_query_op.hppresolver_service.hppresolver_service_base.hppscheduler.hppscheduler_operation.hppscheduler_task.hppscheduler_thread_info.hppscoped_lock.hppscoped_ptr.hppselect_interrupter.hppselect_reactor.hppservice_registry.hppsignal_blocker.hppsignal_handler.hppsignal_init.hppsignal_op.hppsignal_set_service.hppsocket_holder.hppsocket_ops.hppsocket_option.hppsocket_select_interrupter.hppsocket_types.hppsource_location.hppstatic_mutex.hppstd_event.hppstd_fenced_block.hppstd_global.hppstd_mutex.hppstd_static_mutex.hppstd_thread.hppstrand_executor_service.hppstrand_service.hppstring_view.hppthread.hppthread_context.hppthread_group.hppthread_info_base.hppthrow_error.hppthrow_exception.hpptimed_cancel_op.hpptimer_queue.hpptimer_queue_base.hpptimer_queue_ptime.hpptimer_queue_set.hpptimer_scheduler.hpptimer_scheduler_fwd.hpptss_ptr.hpptype_traits.hpputility.hppwait_handler.hppwait_op.hppwin_event.hppwin_fd_set_adapter.hppwin_global.hppwin_iocp_file_service.hppwin_iocp_handle_read_op.hppwin_iocp_handle_service.hppwin_iocp_handle_write_op.hppwin_iocp_io_context.hppwin_iocp_null_buffers_op.hppwin_iocp_operation.hppwin_iocp_overlapped_op.hppwin_iocp_overlapped_ptr.hppwin_iocp_serial_port_service.hppwin_iocp_socket_accept_op.hppwin_iocp_socket_connect_op.hppwin_iocp_socket_recv_op.hppwin_iocp_socket_recvfrom_op.hppwin_iocp_socket_recvmsg_op.hppwin_iocp_socket_send_op.hppwin_iocp_socket_service.hppwin_iocp_socket_service_base.hppwin_iocp_thread_info.hppwin_iocp_wait_op.hppwin_mutex.hppwin_object_handle_service.hppwin_static_mutex.hppwin_thread.hppwin_tss_ptr.hppwinapp_thread.hppwince_thread.hppwinrt_async_manager.hppwinrt_async_op.hppwinrt_resolve_op.hppwinrt_resolver_service.hppwinrt_socket_connect_op.hppwinrt_socket_recv_op.hppwinrt_socket_send_op.hppwinrt_ssocket_service.hppwinrt_ssocket_service_base.hppwinrt_timer_scheduler.hppwinrt_utils.hppwinsock_init.hppwork_dispatcher.hppwrapped_handler.hpp
dispatch.hppdisposition.hpperror.hppexecution.hpp
execution
execution_context.hppexecutor.hppexecutor_work_guard.hpp
experimental
file_base.hpp
generic
handler_continuation_hook.hpphigh_resolution_timer.hppimmediate.hpp
impl
io_context.hppio_context_strand.hpp
ip
is_applicable_property.hppis_contiguous_iterator.hppis_executor.hppis_read_buffered.hppis_write_buffered.hpp
local
multiple_exceptions.hpppackaged_task.hppplaceholders.hpp
posix
post.hppprefer.hppprepend.hppquery.hpprandom_access_file.hppread.hppread_at.hppread_until.hppreadable_pipe.hpprecycling_allocator.hppredirect_error.hppregistered_buffer.hpprequire.hpprequire_concept.hppserial_port.hppserial_port_base.hppsignal_set.hppsignal_set_base.hppsocket_base.hppspawn.hppssl.hpp
ssl
static_thread_pool.hppsteady_timer.hppstrand.hppstream_file.hppstreambuf.hppsystem_context.hppsystem_executor.hppsystem_timer.hppthis_coro.hppthread_pool.hpptime_traits.hpp
traits
ts
unyield.hppuse_awaitable.hppuse_future.hppuses_executor.hppversion.hppwait_traits.hpp
windows
writable_pipe.hppwrite.hppwrite_at.hppyield.hpp
assert.hpp
assert
assign.hpp
assign
atomic.hpp
atomic
atomic.hppatomic_flag.hppatomic_ref.hppcapabilities.hpp
detail
addressof.hppaligned_variable.hppatomic_flag_impl.hppatomic_impl.hppatomic_ref_impl.hppbitwise_cast.hppbitwise_fp_cast.hppcapabilities.hppcaps_arch_gcc_aarch32.hppcaps_arch_gcc_aarch64.hppcaps_arch_gcc_alpha.hppcaps_arch_gcc_arm.hppcaps_arch_gcc_ppc.hppcaps_arch_gcc_sparc.hppcaps_arch_gcc_x86.hppcaps_arch_msvc_arm.hppcaps_arch_msvc_x86.hppcaps_gcc_atomic.hppcaps_gcc_sync.hppcaps_linux_arm.hppcaps_windows.hppcas_based_exchange.hppclassify.hppconfig.hppcore_arch_operations.hppcore_arch_operations_fwd.hppcore_arch_ops_gcc_aarch32.hppcore_arch_ops_gcc_aarch64.hppcore_arch_ops_gcc_alpha.hppcore_arch_ops_gcc_arm.hppcore_arch_ops_gcc_ppc.hppcore_arch_ops_gcc_sparc.hppcore_arch_ops_gcc_x86.hppcore_arch_ops_msvc_arm.hppcore_arch_ops_msvc_x86.hppcore_operations.hppcore_operations_emulated.hppcore_operations_emulated_fwd.hppcore_operations_fwd.hppcore_ops_cas_based.hppcore_ops_gcc_atomic.hppcore_ops_gcc_sync.hppcore_ops_linux_arm.hppcore_ops_windows.hppextending_cas_based_arithmetic.hppextra_fp_operations.hppextra_fp_operations_fwd.hppextra_fp_ops_emulated.hppextra_fp_ops_generic.hppextra_operations.hppextra_operations_fwd.hppextra_ops_emulated.hppextra_ops_gcc_aarch32.hppextra_ops_gcc_aarch64.hppextra_ops_gcc_arm.hppextra_ops_gcc_ppc.hppextra_ops_gcc_x86.hppextra_ops_generic.hppextra_ops_msvc_arm.hppextra_ops_msvc_x86.hppfence_arch_operations.hppfence_arch_ops_gcc_aarch32.hppfence_arch_ops_gcc_aarch64.hppfence_arch_ops_gcc_alpha.hppfence_arch_ops_gcc_arm.hppfence_arch_ops_gcc_ppc.hppfence_arch_ops_gcc_sparc.hppfence_arch_ops_gcc_x86.hppfence_arch_ops_msvc_arm.hppfence_arch_ops_msvc_x86.hppfence_operations.hppfence_operations_emulated.hppfence_ops_gcc_atomic.hppfence_ops_gcc_sync.hppfence_ops_linux_arm.hppfence_ops_windows.hppfloat_sizes.hppfooter.hppfp_operations.hppfp_operations_fwd.hppfp_ops_emulated.hppfp_ops_generic.hppfutex.hppgcc_arm_asm_common.hppgcc_atomic_memory_order_utils.hppgcc_ppc_asm_common.hppheader.hppint_sizes.hppintegral_conversions.hppinterlocked.hppintptr.hpplink.hpplock_pool.hppmemory_order_utils.hpponce_flag.hppops_gcc_aarch32_common.hppops_gcc_aarch64_common.hppops_gcc_arm_common.hppops_gcc_ppc_common.hppops_msvc_common.hpppause.hppplatform.hppstorage_traits.hppstring_ops.hpp
type_traits
wait_capabilities.hppwait_caps_darwin_ulock.hppwait_caps_dragonfly_umtx.hppwait_caps_freebsd_umtx.hppwait_caps_futex.hppwait_caps_windows.hppwait_on_address.hppwait_operations.hppwait_operations_fwd.hppwait_ops_darwin_ulock.hppwait_ops_dragonfly_umtx.hppwait_ops_emulated.hppwait_ops_freebsd_umtx.hppwait_ops_futex.hppwait_ops_generic.hppwait_ops_windows.hpp
fences.hppipc_atomic.hppipc_atomic_flag.hppipc_atomic_ref.hpp
beast.hpp
beast
_experimental
core.hpp
core
async_base.hppbasic_stream.hppbind_handler.hppbuffer_ref.hppbuffer_traits.hppbuffered_read_stream.hppbuffers_adaptor.hppbuffers_cat.hppbuffers_generator.hppbuffers_prefix.hppbuffers_range.hppbuffers_suffix.hppbuffers_to_string.hpp
detail
detect_ssl.hpperror.hppfile.hppfile_base.hppfile_posix.hppfile_stdio.hppfile_win32.hppflat_buffer.hppflat_static_buffer.hppflat_stream.hpp
impl
make_printable.hppmulti_buffer.hppostream.hpprate_policy.hppread_size.hpprole.hppsaved_handler.hppspan.hppstatic_buffer.hppstatic_string.hppstream_traits.hppstring.hppstring_param.hppstring_type.hpptcp_stream.hpp
http.hpp
http
src.hppssl.hpp
ssl
version.hppwebsocket.hpp
websocket
zlib.hpp
zlib
bimap.hpp
bimap
bimap.hpp
container_adaptor
detail
list_of.hppmultiset_of.hpp
property_map
relation
set_of.hpp
support
tags
unconstrained_set_of.hppunordered_multiset_of.hppunordered_set_of.hppvector_of.hpp
views
bind.hpp
bind
blank.hppblank_fwd.hppcall_traits.hppcallable_traits.hpp
callable_traits
cast.hppcerrno.hppcharconv.hpp
charconv
checked_delete.hppchrono.hpp
chrono
circular_buffer.hpp
circular_buffer
circular_buffer_fwd.hppcobalt.hpp
cobalt
compat
compressed_pair.hppcompute.hpp
compute
algorithm.hpp
algorithm
accumulate.hppadjacent_difference.hppadjacent_find.hppall_of.hppany_of.hppbinary_search.hppcopy.hppcopy_if.hppcopy_n.hppcount.hppcount_if.hpp
detail
equal.hppequal_range.hppexclusive_scan.hppfill.hppfill_n.hppfind.hppfind_end.hppfind_if.hppfind_if_not.hppfor_each.hppfor_each_n.hppgather.hppgenerate.hppgenerate_n.hppincludes.hppinclusive_scan.hppinner_product.hppinplace_merge.hppiota.hppis_partitioned.hppis_permutation.hppis_sorted.hpplexicographical_compare.hpplower_bound.hppmax_element.hppmerge.hppmin_element.hppminmax_element.hppmismatch.hppnext_permutation.hppnone_of.hppnth_element.hpppartial_sum.hpppartition.hpppartition_copy.hpppartition_point.hppprev_permutation.hpprandom_shuffle.hppreduce.hppreduce_by_key.hppremove.hppremove_if.hppreplace.hppreplace_copy.hppreverse.hppreverse_copy.hpprotate.hpprotate_copy.hppscatter.hppscatter_if.hppsearch.hppsearch_n.hppset_difference.hppset_intersection.hppset_symmetric_difference.hppset_union.hppsort.hppsort_by_key.hppstable_partition.hppstable_sort.hppstable_sort_by_key.hppswap_ranges.hpptransform.hpptransform_if.hpptransform_reduce.hppunique.hppunique_copy.hppupper_bound.hpp
allocator.hpp
allocator
async.hpp
async
buffer.hppcl.hppcl_ext.hppclosure.hppcommand_queue.hppconfig.hppcontainer.hpp
container
context.hppcore.hpp
detail
device.hppevent.hppexception.hpp
exception
experimental
function.hppfunctional.hpp
functional
image.hpp
image
image2d.hppimage3d.hppimage_format.hppimage_sampler.hpp
interop
iterator.hpp
iterator
kernel.hpplambda.hpp
lambda
memory.hpp
memory
memory_object.hpppipe.hppplatform.hppprogram.hpprandom.hpp
random
source.hppsvm.hppsystem.hpptype_traits.hpp
type_traits
types.hpp
types
user_event.hpputility.hpp
utility
version.hppwait_list.hpp
concept
concept_archetype.hppconcept_check.hpp
concept_check
config.hpp
config
container
adaptive_pool.hppallocator.hppallocator_traits.hppcontainer_fwd.hppdeque.hpp
detail
devector.hppflat_map.hppflat_set.hpplist.hppmap.hppnew_allocator.hppnode_allocator.hppnode_handle.hppoptions.hpp
pmr
scoped_allocator.hppscoped_allocator_fwd.hppset.hppslist.hppsmall_vector.hppstable_vector.hppstatic_vector.hppstring.hppthrow_exception.hppuses_allocator.hppuses_allocator_fwd.hppvector.hpp
container_hash
context
contract.hpp
contract
contract_macro.hppconvert.hpp
convert
core
coroutine
coroutine2
crc.hppcregex.hppcstdfloat.hppcstdint.hppcstdlib.hppcurrent_function.hppcxx11_char_types.hppdate_time.hpp
date_time
adjust_functors.hppc_local_time_adjustor.hppc_time.hppcompiler_config.hppconstrained_value.hppdate.hppdate_clock_device.hppdate_defs.hppdate_duration.hppdate_duration_types.hppdate_facet.hppdate_format_simple.hppdate_formatting.hppdate_formatting_limited.hppdate_formatting_locales.hppdate_generator_formatter.hppdate_generator_parser.hppdate_generators.hppdate_iterator.hppdate_names_put.hppdate_parsing.hppdst_rules.hppdst_transition_generators.hppfiletime_functions.hppfind_match.hppformat_date_parser.hpp
gregorian
gregorian_calendar.hppgregorian_calendar.ippint_adapter.hppiso_format.hpp
local_time
local_time_adjustor.hpplocal_timezone_defs.hpplocale_config.hppmicrosec_time_clock.hppparse_format_base.hppperiod.hppperiod_formatter.hppperiod_parser.hpp
posix_time
special_defs.hppspecial_values_formatter.hppspecial_values_parser.hppstring_convert.hppstring_parse_tree.hppstrings_from_facet.hpptime.hpptime_clock.hpptime_defs.hpptime_duration.hpptime_facet.hpptime_formatting_streams.hpptime_iterator.hpptime_parsing.hpptime_resolution_traits.hpptime_system_counted.hpptime_system_split.hpptime_zone_base.hpptime_zone_names.hpptz_db_base.hppwrapping_int.hppyear_month_day.hpp
describe.hpp
describe
detail
algorithm.hppallocator_utilities.hppatomic_count.hppbasic_pointerbuf.hppbinary_search.hppbitmask.hppcall_traits.hppcatch_exceptions.hppcompressed_pair.hppcontainer_fwd.hppfenv.hpphas_default_constructor.hppidentifier.hppindirect_traits.hppinterlocked.hppis_incrementable.hppis_sorted.hppis_xxx.hppiterator.hpplcast_precision.hpplightweight_main.hpplightweight_mutex.hpplightweight_test.hpplightweight_test_report.hpplightweight_thread.hppnamed_template_params.hppno_exceptions_support.hppnumeric_traits.hppob_compressed_pair.hppquick_allocator.hppreference_content.hppscoped_enum_emulation.hppselect_type.hppsp_typeinfo.hpptemplated_streams.hpputf8_codecvt_facet.hpputf8_codecvt_facet.ipp
winapi
workaround.hpp
dll.hpp
dll
dynamic_bitset.hpp
dynamic_bitset
dynamic_bitset_fwd.hppenable_shared_from_this.hppendian.hpp
endian
exception
exception_ptr.hpp
fiber
filesystem.hpp
filesystem
flyweight.hpp
flyweight
foreach.hppforeach_fwd.hppformat.hpp
format
function.hpp
function
function_equal.hppfunction_output_iterator.hpp
function_types
functional.hpp
functional
fusion
adapted.hpp
adapted
adt.hpp
adt
array.hpp
array
boost_array.hpp
boost_array
boost_tuple.hpp
boost_tuple
mpl.hpp
mpl
std_array.hpp
std_array
std_pair.hppstd_tuple.hpp
std_tuple
struct.hpp
struct
algorithm.hpp
algorithm
container.hpp
container
deque.hpp
deque
generation.hpp
generation
list.hpp
list
map.hpp
map
set.hpp
set
vector.hpp
vector
functional.hpp
functional
include
accumulate.hppadapt_adt.hppadapt_adt_named.hppadapt_assoc_adt.hppadapt_assoc_adt_named.hppadapt_assoc_struct.hppadapt_assoc_struct_named.hppadapt_struct.hppadapt_struct_named.hppadapted.hppadapter.hppadvance.hppalgorithm.hppall.hppany.hpparray.hppas_deque.hppas_list.hppas_map.hppas_set.hppas_vector.hppat.hppat_c.hppat_key.hppauxiliary.hppback.hppbegin.hppboost_array.hppboost_tuple.hppcategory_of.hppclear.hppcomparison.hppcons.hppcons_tie.hppcontainer.hppconvert.hppcopy.hppcount.hppcount_if.hppdeduce.hppdeduce_sequence.hppdefine_assoc_struct.hppdefine_struct.hppdefine_struct_inline.hppdeque.hppdeque_fwd.hppdeque_tie.hppderef.hppderef_data.hppdistance.hppempty.hppend.hppequal_to.hpperase.hpperase_key.hppfilter.hppfilter_if.hppfilter_view.hppfind.hppfind_if.hppflatten.hppflatten_view.hppfold.hppfor_each.hppfront.hppfunctional.hppfused.hppfused_function_object.hppfused_procedure.hppgeneration.hppgreater.hppgreater_equal.hpphas_key.hpphash.hppidentity_view.hppignore.hppin.hppinsert.hppinsert_range.hppintrinsic.hppinvocation.hppinvoke.hppinvoke_function_object.hppinvoke_procedure.hppio.hppis_iterator.hppis_segmented.hppis_sequence.hppis_view.hppiter_fold.hppiteration.hppiterator.hppiterator_adapter.hppiterator_base.hppiterator_facade.hppiterator_range.hppjoin.hppjoint_view.hppkey_of.hppless.hppless_equal.hpplist.hpplist_fwd.hpplist_tie.hppmake_cons.hppmake_deque.hppmake_fused.hppmake_fused_function_object.hppmake_fused_procedure.hppmake_list.hppmake_map.hppmake_set.hppmake_tuple.hppmake_unfused.hppmake_vector.hppmap.hppmap_fwd.hppmap_tie.hppmove.hppmpl.hppnext.hppnil.hppnone.hppnot_equal_to.hppnview.hppout.hpppair.hpppair_tie.hpppop_back.hpppop_front.hppprior.hppproxy_type.hpppush_back.hpppush_front.hppquery.hppremove.hppremove_if.hpprepetitive_view.hppreplace.hppreplace_if.hppreverse.hppreverse_fold.hppreverse_iter_fold.hppreverse_view.hppsegmented_fold_until.hppsegmented_iterator.hppsegments.hppsequence.hppsequence_base.hppsequence_facade.hppset.hppset_fwd.hppsingle_view.hppsize.hppstd_array.hppstd_pair.hppstd_tuple.hppstruct.hppsupport.hppswap.hpptag_of.hpptag_of_fwd.hpptransform.hpptransform_view.hpptransformation.hpptuple.hpptuple_fwd.hpptuple_tie.hppunfused.hppunfused_typed.hppunused.hppvalue_at.hppvalue_at_key.hppvalue_of.hppvalue_of_data.hppvector.hppvector10.hppvector20.hppvector30.hppvector40.hppvector50.hppvector_fwd.hppvector_tie.hppview.hppvoid.hppzip.hppzip_view.hpp
iterator.hpp
iterator
mpl.hpp
mpl
sequence.hpp
sequence
support.hpp
support
tuple.hpp
tuple
view.hpp
view
detail
filter_view.hpp
filter_view
flatten_view.hpp
flatten_view
identity_view.hpp
identity_view
iterator_range.hpp
iterator_range
joint_view.hpp
joint_view
nview.hpp
nview
repetitive_view.hpp
repetitive_view
reverse_view.hpp
reverse_view
single_view.hpp
single_view
transform_view.hpp
transform_view
zip_view.hpp
zip_view
generator_iterator.hppgeometry.hpp
geometry
algorithms
append.hpparea.hpparea_result.hppassign.hppazimuth.hppbuffer.hppcentroid.hppclear.hppclosest_points.hppcomparable_distance.hppconvert.hppconvex_hull.hppcorrect.hppcorrect_closure.hppcovered_by.hppcrosses.hppdefault_area_result.hppdensify.hpp
detail
assign_box_corners.hppassign_indexed_point.hppassign_values.hpp
buffer
calculate_null.hppcalculate_point_order.hppcalculate_sum.hpp
centroid
closest_feature
closest_points
comparable_distance
convert_indexed_to_indexed.hppconvert_point_to_point.hpp
convex_hull
counting.hpp
covered_by
direction_code.hpp
disjoint
distance
dummy_geometries.hpp
envelope
equals
expand
expand_by_epsilon.hppextreme_points.hppfor_each_range.hppgc_group_elements.hppgc_make_rtree.hppgc_topological_dimension.hppget_max_size.hpphas_self_intersections.hppinterior_iterator.hpp
intersection
intersects
is_simple
is_valid
make
max_interval_gap.hppmulti_modify.hppmulti_modify_with_predicate.hppmulti_sum.hppnormalize.hppnot.hppnum_distinct_consecutive_points.hpp
overlaps
overlay
partition.hpppoint_is_spike_or_equal.hpppoint_on_border.hpp
relate
relation
ring_identifier.hpp
sections
select_geometry_type.hppsigned_size_type.hppsingle_geometry.hppsub_range.hppsweep.hppthrow_on_empty_input.hpp
touches
tupled_output.hpp
turns
visit.hpp
within
difference.hppdiscrete_frechet_distance.hppdiscrete_hausdorff_distance.hppdisjoint.hpp
dispatch
distance.hppenvelope.hppequals.hppexpand.hppfor_each.hppintersection.hppintersects.hppis_convex.hppis_empty.hppis_simple.hppis_valid.hpplength.hppline_interpolate.hppmake.hppmerge_elements.hppnot_implemented.hppnum_geometries.hppnum_interior_rings.hppnum_points.hppnum_segments.hppoverlaps.hppperimeter.hpppoint_on_surface.hpprelate.hpprelation.hppremove_spikes.hppreverse.hppsimplify.hppsym_difference.hpptouches.hpptransform.hppunion.hppunique.hppvalidity_failure_type.hppwithin.hpp
arithmetic
core
formulas
geometries
geometry.hpp
index
io
iterators
multi
policies
srs
epsg.hppesri.hppiau2000.hppprojection.hpp
projections
code.hppconstants.hppdpar.hppepsg.hppepsg_params.hppepsg_traits.hppesri.hppesri_params.hppesri_traits.hppexception.hppfactory.hppgrids.hppiau2000.hppiau2000_params.hppiau2000_traits.hpp
impl
invalid_point.hpppar_data.hpp
proj
proj4.hppspar.hppsrid_traits.hppstr_cast.hpp
shared_grids.hppshared_grids_boost.hppshared_grids_std.hppsphere.hppspheroid.hppsrs.hpptransformation.hpp
strategies
agnostic
area.hpp
area
area_result.hppazimuth.hpp
azimuth
buffer.hpp
buffer
cartesian.hpp
cartesian
centroid.hpp
centroid
closest_points
comparable_distance_result.hppcompare.hpp
concepts
convex_hull.hpp
convex_hull
covered_by.hppdefault_area_result.hppdefault_comparable_distance_result.hppdefault_distance_result.hppdefault_length_result.hppdefault_strategy.hppdensify.hpp
densify
detail.hpp
discrete_distance
disjoint.hppdistance.hpp
distance
distance_result.hppenvelope.hpp
envelope
expand.hpp
expand
geographic.hpp
geographic
index
intersection.hppintersection_result.hppintersection_strategies.hpp
io
is_convex
length
line_interpolate.hpp
line_interpolate
normalize.hpppoint_order.hpprelate.hpp
relate
side.hppside_info.hpp
simplify
spherical.hpp
spherical
strategies.hppstrategy_transform.hpptags.hpptransform.hpp
transform
within.hpp
strategy
util
views
get_pointer.hppgil.hpp
gil
algorithm.hppbit_aligned_pixel_iterator.hppbit_aligned_pixel_reference.hppchannel.hppchannel_algorithm.hppchannel_numeric_operations.hppcmyk.hppcolor_base.hppcolor_base_algorithm.hppcolor_convert.hppconcepts.hpp
concepts
detail
device_n.hppdynamic_step.hpp
extension
dynamic_image
histogram
image_processing
io
numeric
rasterization
toolbox
gray.hpphistogram.hppimage.hpp
image_processing
image_view.hppimage_view_factory.hpp
io
iterator_from_2d.hpplocator.hppmetafunctions.hpppacked_pixel.hpppixel.hpppixel_iterator.hpppixel_iterator_adaptor.hpppixel_numeric_operations.hppplanar_pixel_iterator.hppplanar_pixel_reference.hpppoint.hppposition_iterator.hpppremultiply.hpppromote_integral.hpprgb.hpprgba.hppstep_iterator.hpptypedefs.hpputilities.hppvirtual_locator.hpp
graph
adj_list_serialize.hppadjacency_iterator.hppadjacency_list.hppadjacency_list_io.hppadjacency_matrix.hppastar_search.hppbandwidth.hppbc_clustering.hppbellman_ford_shortest_paths.hppbetweenness_centrality.hppbiconnected_components.hppbipartite.hppboyer_myrvold_planar_test.hppboykov_kolmogorov_max_flow.hppbreadth_first_search.hppbron_kerbosch_all_cliques.hppbuffer_concepts.hppchrobak_payne_drawing.hppcircle_layout.hppcloseness_centrality.hppclustering_coefficient.hppcompressed_sparse_row_graph.hppconnected_components.hppcopy.hppcore_numbers.hppcreate_condensation_graph.hppcuthill_mckee_ordering.hppcycle_canceling.hppdag_shortest_paths.hppdegree_centrality.hppdepth_first_search.hpp
detail
dijkstra_shortest_paths.hppdijkstra_shortest_paths_no_color_map.hppdimacs.hppdirected_graph.hppdll_import_export.hppdominator_tree.hppeccentricity.hppedge_coloring.hppedge_connectivity.hppedge_list.hppedmonds_karp_max_flow.hppedmunds_karp_max_flow.hpperdos_renyi_generator.hppexception.hppexterior_property.hppfiltered_graph.hppfind_flow_cost.hppfloyd_warshall_shortest.hppfruchterman_reingold.hppgeodesic_distance.hppgraph_archetypes.hppgraph_as_tree.hppgraph_concepts.hppgraph_mutability_traits.hppgraph_selectors.hppgraph_stats.hppgraph_traits.hppgraph_utility.hppgraphml.hppgraphviz.hppgrid_graph.hppgursoy_atun_layout.hpphawick_circuits.hpphoward_cycle_ratio.hppincremental_components.hppis_kuratowski_subgraph.hppis_straight_line_drawing.hppisomorphism.hppiteration_macros.hppiteration_macros_undef.hppjohnson_all_pairs_shortest.hppkamada_kawai_spring_layout.hppking_ordering.hppkruskal_min_spanning_tree.hpplabeled_graph.hppleda_graph.hpplookup_edge.hpploop_erased_random_walk.hppmake_biconnected_planar.hppmake_connected.hppmake_maximal_planar.hppmatrix_as_graph.hppmax_cardinality_matching.hppmaximum_adjacency_search.hppmaximum_weighted_matching.hppmcgregor_common_subgraphs.hppmesh_graph_generator.hppmetis.hppmetric_tsp_approx.hppminimum_degree_ordering.hppnamed_function_params.hppnamed_graph.hppneighbor_bfs.hppnumeric_values.hppone_bit_color_map.hppoverloading.hpppage_rank.hppplanar_canonical_ordering.hpp
planar_detail
planar_face_traversal.hppplod_generator.hpppoint_traits.hppprim_minimum_spanning_tree.hppprofile.hppproperties.hppproperty_iter_range.hpp
property_maps
push_relabel_max_flow.hppr_c_shortest_paths.hpprandom.hpprandom_layout.hpprandom_spanning_tree.hppread_dimacs.hpprelax.hppreverse_graph.hpprmat_graph_generator.hppsequential_vertex_coloring.hppsimple_point.hppsloan_ordering.hppsmall_world_generator.hppsmallest_last_ordering.hppssca_graph_generator.hppst_connected.hppstanford_graph.hppstoer_wagner_min_cut.hppstrong_components.hppsubgraph.hppsuccessive_shortest_path_nonnegative_weights.hpptiernan_all_cycles.hpptopological_sort.hpptopology.hpptransitive_closure.hpptransitive_reduction.hpptranspose_graph.hpptree_traits.hpptwo_bit_color_map.hpptwo_graphs_common_spanning_trees.hppundirected_dfs.hppundirected_graph.hppuse_mpi.hppvector_as_graph.hppvertex_and_edge_range.hppvf2_sub_graph_iso.hppvisitors.hppwavefront.hppwrite_dimacs.hpp
hana.hpp
hana
accessors.hppadapt_adt.hppadapt_struct.hppadjust.hppadjust_if.hppall.hppall_of.hppand.hppany.hppany_of.hppap.hppappend.hppassert.hppat.hppat_key.hppback.hppbasic_tuple.hppbool.hppcartesian_product.hppchain.hppcomparing.hppconcat.hppconcept.hpp
concept
config.hppcontains.hppcore.hpp
core
count.hppcount_if.hppcycle.hppdefine_struct.hpp
detail
difference.hppdiv.hppdrop_back.hppdrop_front.hppdrop_front_exactly.hppdrop_while.hppduplicate.hppempty.hppequal.hpperase_key.hppeval.hppeval_if.hpp
experimental
ext
extend.hppextract.hppfill.hppfilter.hppfind.hppfind_if.hppfirst.hppflatten.hppfold.hppfold_left.hppfold_right.hppfor_each.hppfront.hppfunctional.hpp
functional
fuse.hpp
fwd
accessors.hppadapt_adt.hppadapt_struct.hppadjust.hppadjust_if.hppall.hppall_of.hppand.hppany.hppany_of.hppap.hppappend.hppat.hppat_key.hppback.hppbasic_tuple.hppbool.hppcartesian_product.hppchain.hppcomparing.hppconcat.hpp
concept
contains.hppcore.hpp
core
count.hppcount_if.hppcycle.hppdefine_struct.hppdifference.hppdiv.hppdrop_back.hppdrop_front.hppdrop_front_exactly.hppdrop_while.hppduplicate.hppempty.hppequal.hpperase_key.hppeval.hppeval_if.hppextend.hppextract.hppfill.hppfilter.hppfind.hppfind_if.hppfirst.hppflatten.hppfold.hppfold_left.hppfold_right.hppfor_each.hppfront.hppfuse.hppgreater.hppgreater_equal.hppgroup.hpphash.hppif.hppindex_if.hppinsert.hppinsert_range.hppintegral_constant.hppintersection.hppintersperse.hppis_disjoint.hppis_empty.hppis_subset.hppkeys.hpplazy.hpplength.hppless.hppless_equal.hpplexicographical_compare.hpplift.hppmap.hppmax.hppmaximum.hppmembers.hppmin.hppminimum.hppminus.hppmod.hppmonadic_compose.hppmonadic_fold_left.hppmonadic_fold_right.hppmult.hppnegate.hppnone.hppnone_of.hppnot.hppnot_equal.hppone.hppoptional.hppor.hppordering.hpppair.hpppartition.hpppermutations.hppplus.hpppower.hppprefix.hppprepend.hppproduct.hpprange.hppremove.hppremove_at.hppremove_if.hppremove_range.hpprepeat.hppreplace.hppreplace_if.hppreplicate.hppreverse.hppreverse_fold.hppscan_left.hppscan_right.hppsecond.hppset.hppsize.hppslice.hppsort.hppspan.hppstring.hppsuffix.hppsum.hppsymmetric_difference.hpptake_back.hpptake_front.hpptake_while.hpptap.hppthen.hpptransform.hpptuple.hpptype.hppunfold_left.hppunfold_right.hppunion.hppunique.hppunpack.hppvalue.hppwhile.hppzero.hppzip.hppzip_shortest.hppzip_shortest_with.hppzip_with.hpp
greater.hppgreater_equal.hppgroup.hpphash.hppif.hppindex_if.hppinsert.hppinsert_range.hppintegral_constant.hppintersection.hppintersperse.hppis_disjoint.hppis_empty.hppis_subset.hppkeys.hpplazy.hpplength.hppless.hppless_equal.hpplexicographical_compare.hpplift.hppmap.hppmax.hppmaximum.hppmembers.hppmin.hppminimum.hppminus.hppmod.hppmonadic_compose.hppmonadic_fold_left.hppmonadic_fold_right.hppmult.hppnegate.hppnone.hppnone_of.hppnot.hppnot_equal.hppone.hppoptional.hppor.hppordering.hpppair.hpppartition.hpppermutations.hppplus.hpppower.hppprefix.hppprepend.hppproduct.hpprange.hppremove.hppremove_at.hppremove_if.hppremove_range.hpprepeat.hppreplace.hppreplace_if.hppreplicate.hppreverse.hppreverse_fold.hppscan_left.hppscan_right.hppsecond.hppset.hppsize.hppslice.hppsort.hppspan.hppstring.hppsuffix.hppsum.hppsymmetric_difference.hpptake_back.hpptake_front.hpptake_while.hpptap.hppthen.hpptraits.hpptransform.hpptuple.hpptype.hppunfold_left.hppunfold_right.hppunion.hppunique.hppunpack.hppvalue.hppversion.hppwhile.hppzero.hppzip.hppzip_shortest.hppzip_shortest_with.hppzip_with.hpp
hash2
headers
heap
histogram.hpp
histogram
hof.hpp
hof
icl
associative_element_container.hppassociative_interval_container.hppclosed_interval.hpp
concept
continuous_interval.hpp
detail
discrete_interval.hppdynamic_interval_traits.hppfunctors.hppgregorian.hppimpl_config.hppinterval.hppinterval_base_map.hppinterval_base_set.hppinterval_bounds.hppinterval_combining_style.hppinterval_map.hppinterval_set.hppinterval_traits.hppiterator.hppleft_open_interval.hppmap.hppopen_interval.hpp
predicates
ptime.hpprational.hppright_open_interval.hppseparate_interval_set.hppset.hppsplit_interval_map.hppsplit_interval_set.hpp
type_traits
implicit_cast.hppindirect_reference.hppinteger.hpp
integer
integer_fwd.hppinteger_traits.hpp
interprocess
allocators
anonymous_shared_memory.hpp
containers
creation_tags.hpp
detail
errors.hppexceptions.hppfile_mapping.hpp
indexes
interprocess_fwd.hppinterprocess_printers.hpp
ipc
managed_external_buffer.hppmanaged_heap_memory.hppmanaged_mapped_file.hppmanaged_shared_memory.hppmanaged_windows_shared_memory.hppmanaged_xsi_shared_memory.hppmapped_region.hpp
mem_algo
offset_ptr.hpppermissions.hppsegment_manager.hppshared_memory_object.hpp
smart_ptr
streams
sync
timed_utils.hppwindows_shared_memory.hppxsi_key.hppxsi_shared_memory.hpp
intrusive
any_hook.hppavl_set.hppavl_set_hook.hppavltree.hppavltree_algorithms.hppbs_set.hppbs_set_hook.hppbstree.hppbstree_algorithms.hppcircular_list_algorithms.hppcircular_slist_algorithms.hppderivation_value_traits.hpp
detail
hashtable.hppintrusive_fwd.hpplinear_slist_algorithms.hpplink_mode.hpplist.hpplist_hook.hppmember_value_traits.hppoptions.hpppack_options.hppparent_from_member.hpppointer_plus_bits.hpppointer_rebind.hpppointer_traits.hpppriority_compare.hpprbtree.hpprbtree_algorithms.hppset.hppset_hook.hppsg_set.hppsgtree.hppsgtree_algorithms.hppslist.hppslist_hook.hppsplay_set.hppsplaytree.hppsplaytree_algorithms.hpptreap.hpptreap_algorithms.hpptreap_set.hpptrivial_value_traits.hppunordered_set.hppunordered_set_hook.hpp
intrusive_ptr.hpp
io
io_fwd.hpp
iostreams
categories.hppchain.hppchar_traits.hppchecked_operations.hppclose.hppcode_converter.hppcombine.hppcompose.hppconcepts.hppconstants.hppcopy.hpp
detail
device
filter
filtering_stream.hppfiltering_streambuf.hppflush.hppget.hppimbue.hppinput_sequence.hppinvert.hppoperations.hppoperations_fwd.hppoptimal_buffer_size.hppoutput_sequence.hpppipeline.hpppositioning.hppput.hppputback.hppread.hpprestrict.hppseek.hppskip.hppslice.hppstream.hppstream_buffer.hpptee.hpptraits.hpptraits_fwd.hppwrite.hpp
is_placeholder.hppiterator.hpp
iterator
iterator_adaptors.hppjson.hpp
json
array.hppbasic_parser.hppbasic_parser_impl.hppconversion.hppdebug_printers.hpp
detail
error.hppfwd.hpp
impl
is_deallocate_trivial.hppjson.natviskind.hppmonotonic_resource.hppnull_resource.hppobject.hppparse.hppparse_into.hppparse_options.hppparser.hpppilfer.hppresult_for.hppserialize.hppserialize_options.hppserializer.hppset_pointer_options.hppsrc.hppstatic_resource.hppstorage_ptr.hppstream_parser.hppstring.hppstring_view.hppvalue.hppvalue_from.hppvalue_ref.hppvalue_stack.hppvalue_to.hppvisit.hpp
lambda
lambda2.hpp
lambda2
leaf.hpp
leaf
lexical_cast.hpp
lexical_cast
limits.hpplocal_function.hpp
local_function
locale.hpp
locale
lockfree
log
attributes.hpp
attributes
common.hppcore.hpp
core
detail
exceptions.hppexpressions.hpp
expressions
keywords
sinks.hpp
sinks
sources
support
trivial.hpp
utility
logic
make_default.hppmake_shared.hppmake_unique.hpp
math
bindings
ccmath
common_factor.hppcommon_factor_ct.hppcommon_factor_rt.hppcomplex.hpp
complex
concepts
constants
cstdfloat
differentiation
distributions.hpp
distributions
filters
interpolators
octonion.hpp
optimization
policies
quadrature
quaternion.hppspecial_functions.hpp
special_functions
acosh.hppairy.hppasinh.hppatanh.hppbernoulli.hppbessel.hppbessel_iterators.hppbessel_prime.hppbeta.hppbinomial.hppcardinal_b_spline.hppcbrt.hppchebyshev.hppchebyshev_transform.hppcos_pi.hppdaubechies_scaling.hppdaubechies_wavelet.hpp
detail
digamma.hppellint_1.hppellint_2.hppellint_3.hppellint_d.hppellint_rc.hppellint_rd.hppellint_rf.hppellint_rg.hppellint_rj.hpperf.hppexpint.hppexpm1.hppfactorials.hppfibonacci.hppfourier_transform_daubechies.hppfpclassify.hppgamma.hppgegenbauer.hpphankel.hpphermite.hppheuman_lambda.hpphypergeometric_0F1.hpphypergeometric_1F0.hpphypergeometric_1F1.hpphypergeometric_2F0.hpphypergeometric_pFq.hpphypot.hppjacobi.hppjacobi_elliptic.hppjacobi_theta.hppjacobi_zeta.hpplaguerre.hpplambert_w.hpplanczos.hpplegendre.hpplegendre_stieltjes.hpplog1p.hpplogaddexp.hpplogsumexp.hppmath_fwd.hppmodf.hppnext.hppnonfinite_num_facets.hppowens_t.hpppolygamma.hpppow.hpppowm1.hppprime.hpprelative_difference.hppround.hpprsqrt.hppsign.hppsin_pi.hppsinc.hppsinhc.hppspherical_harmonic.hppsqrt1pm1.hpptrigamma.hpptrunc.hppulp.hppzeta.hpp
statistics
tools
agm.hpparray.hppassert.hppatomic.hppbig_constant.hppbivariate_statistics.hppcentered_continued_fraction.hppcohen_acceleration.hppcolor_maps.hppcomplex.hppconcepts.hppcondition_numbers.hppconfig.hppconvert_from_string.hppcstdint.hppcubic_roots.hppcxx03_warn.hpp
detail
is_const_iterable.hpppolynomial_horner1_10.hpppolynomial_horner1_11.hpppolynomial_horner1_12.hpppolynomial_horner1_13.hpppolynomial_horner1_14.hpppolynomial_horner1_15.hpppolynomial_horner1_16.hpppolynomial_horner1_17.hpppolynomial_horner1_18.hpppolynomial_horner1_19.hpppolynomial_horner1_2.hpppolynomial_horner1_20.hpppolynomial_horner1_3.hpppolynomial_horner1_4.hpppolynomial_horner1_5.hpppolynomial_horner1_6.hpppolynomial_horner1_7.hpppolynomial_horner1_8.hpppolynomial_horner1_9.hpppolynomial_horner2_10.hpppolynomial_horner2_11.hpppolynomial_horner2_12.hpppolynomial_horner2_13.hpppolynomial_horner2_14.hpppolynomial_horner2_15.hpppolynomial_horner2_16.hpppolynomial_horner2_17.hpppolynomial_horner2_18.hpppolynomial_horner2_19.hpppolynomial_horner2_2.hpppolynomial_horner2_20.hpppolynomial_horner2_3.hpppolynomial_horner2_4.hpppolynomial_horner2_5.hpppolynomial_horner2_6.hpppolynomial_horner2_7.hpppolynomial_horner2_8.hpppolynomial_horner2_9.hpppolynomial_horner3_10.hpppolynomial_horner3_11.hpppolynomial_horner3_12.hpppolynomial_horner3_13.hpppolynomial_horner3_14.hpppolynomial_horner3_15.hpppolynomial_horner3_16.hpppolynomial_horner3_17.hpppolynomial_horner3_18.hpppolynomial_horner3_19.hpppolynomial_horner3_2.hpppolynomial_horner3_20.hpppolynomial_horner3_3.hpppolynomial_horner3_4.hpppolynomial_horner3_5.hpppolynomial_horner3_6.hpppolynomial_horner3_7.hpppolynomial_horner3_8.hpppolynomial_horner3_9.hpprational_horner1_10.hpprational_horner1_11.hpprational_horner1_12.hpprational_horner1_13.hpprational_horner1_14.hpprational_horner1_15.hpprational_horner1_16.hpprational_horner1_17.hpprational_horner1_18.hpprational_horner1_19.hpprational_horner1_2.hpprational_horner1_20.hpprational_horner1_3.hpprational_horner1_4.hpprational_horner1_5.hpprational_horner1_6.hpprational_horner1_7.hpprational_horner1_8.hpprational_horner1_9.hpprational_horner2_10.hpprational_horner2_11.hpprational_horner2_12.hpprational_horner2_13.hpprational_horner2_14.hpprational_horner2_15.hpprational_horner2_16.hpprational_horner2_17.hpprational_horner2_18.hpprational_horner2_19.hpprational_horner2_2.hpprational_horner2_20.hpprational_horner2_3.hpprational_horner2_4.hpprational_horner2_5.hpprational_horner2_6.hpprational_horner2_7.hpprational_horner2_8.hpprational_horner2_9.hpprational_horner3_10.hpprational_horner3_11.hpprational_horner3_12.hpprational_horner3_13.hpprational_horner3_14.hpprational_horner3_15.hpprational_horner3_16.hpprational_horner3_17.hpprational_horner3_18.hpprational_horner3_19.hpprational_horner3_2.hpprational_horner3_20.hpprational_horner3_3.hpprational_horner3_4.hpprational_horner3_5.hpprational_horner3_6.hpprational_horner3_7.hpprational_horner3_8.hpprational_horner3_9.hpp
engel_expansion.hppestrin.hppfraction.hppheader_deprecated.hppis_constant_evaluated.hppis_detected.hppis_standalone.hppluroth_expansion.hppminima.hppmp.hppnorms.hppnothrow.hppnumeric_limits.hppnumerical_differentiation.hpppolynomial.hpppolynomial_gcd.hppprecision.hpppromotion.hppquartic_roots.hpprandom_vector.hpprational.hppreal_cast.hpprecurrence.hpproots.hppseries.hppsignal_statistics.hppsimple_continued_fraction.hppstats.hpptest_value.hppthrow_exception.hpptoms748_solve.hpptraits.hpptuple.hpptype_traits.hppulps_plot.hppunivariate_statistics.hppuser.hpputility.hppworkaround.hpp
tr1.hpptr1_c_macros.ipp
math_fwd.hppmem_fn.hppmemory_order.hppmetaparse.hpp
metaparse
accept.hppaccept_tag.hppaccept_when.hppalphanum.hppalways.hppalways_c.hppbuild_parser.hppchange_error_message.hppconfig.hppdebug_parsing_error.hppdefine_error.hppdigit.hppdigit_val.hppempty.hppentire_input.hpp
error
except.hppfail.hppfail_at_first_char_expected.hppfail_tag.hppfirst_of.hppfoldl.hppfoldl1.hppfoldl_reject_incomplete.hppfoldl_reject_incomplete1.hppfoldl_reject_incomplete_start_with_parser.hppfoldl_start_with_parser.hppfoldr.hppfoldr1.hppfoldr_reject_incomplete.hppfoldr_reject_incomplete1.hppfoldr_start_with_parser.hppget_col.hppget_line.hppget_message.hppget_position.hppget_prev_char.hppget_remaining.hppget_result.hppgrammar.hppif_.hppint_.hppis_error.hppiterate.hppiterate_c.hppkeyword.hpplast_of.hppletter.hpplimit_one_char_except_size.hpplimit_one_of_size.hpplimit_sequence_size.hpplimit_string_size.hpplit.hpplit_c.hpplook_ahead.hppmiddle_of.hppnext_char.hppnext_line.hppnth_of.hppnth_of_c.hppone_char.hppone_char_except.hppone_char_except_c.hppone_of.hppone_of_c.hppoptional.hpprange.hpprange_c.hppreject.hpprepeated.hpprepeated1.hpprepeated_one_of.hpprepeated_one_of1.hpprepeated_reject_incomplete.hpprepeated_reject_incomplete1.hppreturn_.hppsequence.hppsequence_apply.hppsource_position.hppsource_position_tag.hppspace.hppspaces.hppstart.hppstring.hppstring_tag.hppstring_value.hpptoken.hpptransform.hpptransform_error.hpptransform_error_message.hppunless_error.hpp
util
v1
accept.hppaccept_tag.hppaccept_when.hppalphanum.hppalways.hppalways_c.hppbuild_parser.hppchange_error_message.hpp
cpp11
cpp14
cpp98
debug_parsing_error.hppdefine_error.hppdigit.hppdigit_val.hppempty.hppentire_input.hpp
error
except.hppfail.hppfail_at_first_char_expected.hppfail_tag.hppfirst_of.hppfoldl.hppfoldl1.hppfoldl_reject_incomplete.hppfoldl_reject_incomplete1.hppfoldl_reject_incomplete_start_with_parser.hppfoldl_start_with_parser.hppfoldr.hppfoldr1.hppfoldr_reject_incomplete.hppfoldr_reject_incomplete1.hppfoldr_start_with_parser.hpp
fwd
get_col.hppget_line.hppget_message.hppget_position.hppget_prev_char.hppget_remaining.hppget_result.hppgrammar.hppif_.hpp
impl
int_.hppis_error.hppiterate.hppiterate_c.hppkeyword.hpplast_of.hppletter.hpplit.hpplit_c.hpplook_ahead.hppmiddle_of.hppnext_char.hppnext_line.hppnth_of.hppnth_of_c.hppone_char.hppone_char_except.hppone_char_except_c.hppone_of.hppone_of_c.hppoptional.hpprange.hpprange_c.hppreject.hpprepeated.hpprepeated1.hpprepeated_one_of.hpprepeated_one_of1.hpprepeated_reject_incomplete.hpprepeated_reject_incomplete1.hppreturn_.hppsequence.hppsequence_apply.hppsource_position.hppsource_position_tag.hppspace.hppspaces.hppstart.hppstring.hppstring_tag.hppstring_value.hppswap.hpptoken.hpptransform.hpptransform_error.hpptransform_error_message.hppunless_error.hpp
util
version.hpp
move
mp11.hpp
mp11
mpl
O1_size.hppO1_size_fwd.hppaccumulate.hppadvance.hppadvance_fwd.hppalias.hppalways.hppand.hppapply.hppapply_fwd.hppapply_wrap.hpparg.hpparg_fwd.hpparithmetic.hppas_sequence.hppassert.hppat.hppat_fwd.hpp
aux_
O1_size_impl.hppadl_barrier.hppadvance_backward.hppadvance_forward.hppapply_1st.hpparg_typedef.hpparithmetic_op.hpparity.hpparity_spec.hppat_impl.hppback_impl.hppbasic_bind.hppbegin_end_impl.hppclear_impl.hppcommon_name_wknd.hppcomparison_op.hpp
config
contains_impl.hppcount_args.hppcount_impl.hppempty_impl.hpperase_impl.hpperase_key_impl.hppfilter_iter.hppfind_if_pred.hppfold_impl.hppfold_impl_body.hppfold_op.hppfold_pred.hppfront_impl.hppfull_lambda.hpphas_apply.hpphas_begin.hpphas_key_impl.hpphas_rebind.hpphas_size.hpphas_tag.hpphas_type.hppinclude_preprocessed.hppinsert_impl.hppinsert_range_impl.hppinserter_algorithm.hppintegral_wrapper.hppis_msvc_eti_arg.hppiter_apply.hppiter_fold_if_impl.hppiter_fold_impl.hppiter_push_front.hppjoint_iter.hpplambda_arity_param.hpplambda_no_ctps.hpplambda_spec.hpplambda_support.hpplargest_int.hpplogical_op.hppmsvc_dtw.hppmsvc_eti_base.hppmsvc_is_class.hppmsvc_never_true.hppmsvc_type.hppna.hppna_assert.hppna_fwd.hppna_spec.hppnested_type_wknd.hppnttp_decl.hppnumeric_cast_utils.hppnumeric_op.hpporder_impl.hppoverload_names.hpppartition_op.hpppop_back_impl.hpppop_front_impl.hpp
preprocessed
bcc
bcc551
bcc_pre590
dmc
gcc
msvc60
msvc70
mwcw
no_ctps
no_ttp
plain
preprocessor
ptr_to_ref.hpppush_back_impl.hpppush_front_impl.hpp
range_c
reverse_fold_impl.hppreverse_fold_impl_body.hppreverse_iter_fold_impl.hppsequence_wrapper.hppshift_op.hppsingle_element_iter.hppsize_impl.hppsort_impl.hppstatic_cast.hpptemplate_arity.hpptemplate_arity_fwd.hpptest.hpp
test
traits_lambda_spec.hpptransform_iter.hpptype_wrapper.hppunwrap.hppvalue_wknd.hppyes_no.hpp
back.hppback_fwd.hppback_inserter.hppbase.hppbegin.hppbegin_end.hppbegin_end_fwd.hppbind.hppbind_fwd.hppbitand.hppbitor.hppbitwise.hppbitxor.hppbool.hppbool_fwd.hppchar.hppchar_fwd.hppclear.hppclear_fwd.hppcomparison.hppcontains.hppcontains_fwd.hppcopy.hppcopy_if.hppcount.hppcount_fwd.hppcount_if.hppdeque.hppderef.hppdistance.hppdistance_fwd.hppdivides.hppempty.hppempty_base.hppempty_fwd.hppempty_sequence.hppend.hppequal.hppequal_to.hpperase.hpperase_fwd.hpperase_key.hpperase_key_fwd.hppeval_if.hppfilter_view.hppfind.hppfind_if.hppfold.hppfor_each.hppfront.hppfront_fwd.hppfront_inserter.hppget_tag.hppgreater.hppgreater_equal.hpphas_key.hpphas_key_fwd.hpphas_xxx.hppidentity.hppif.hppindex_if.hppindex_of.hppinherit.hppinherit_linearly.hppinsert.hppinsert_fwd.hppinsert_range.hppinsert_range_fwd.hppinserter.hppint.hppint_fwd.hppintegral_c.hppintegral_c_fwd.hppintegral_c_tag.hppis_placeholder.hppis_sequence.hppiter_fold.hppiter_fold_if.hppiterator_category.hppiterator_range.hppiterator_tags.hppjoint_view.hppkey_type.hppkey_type_fwd.hpplambda.hpplambda_fwd.hppless.hppless_equal.hpp
limits
list.hpp
list
list_c.hpplogical.hpplong.hpplong_fwd.hpplower_bound.hppmap.hpp
map
math
max.hppmax_element.hppmin.hppmin_element.hppmin_max.hppminus.hppmodulus.hppmultiplies.hpp
multiset
negate.hppnext.hppnext_prior.hppnot.hppnot_equal_to.hppnumeric_cast.hppor.hpporder.hpporder_fwd.hpppair.hpppair_view.hpppartition.hppplaceholders.hppplus.hpppop_back.hpppop_back_fwd.hpppop_front.hpppop_front_fwd.hppprint.hppprior.hppprotect.hpppush_back.hpppush_back_fwd.hpppush_front.hpppush_front_fwd.hppquote.hpprange_c.hppremove.hppremove_if.hppreplace.hppreplace_if.hppreverse.hppreverse_fold.hppreverse_iter_fold.hppsame_as.hppsequence_tag.hppsequence_tag_fwd.hppset.hpp
set
set_c.hppshift_left.hppshift_right.hppsingle_view.hppsize.hppsize_fwd.hppsize_t.hppsize_t_fwd.hppsizeof.hppsort.hppstable_partition.hppstring.hppswitch.hpptag.hpptimes.hpptransform.hpptransform_view.hppunique.hppunpack_args.hppupper_bound.hppvalue_type.hppvalue_type_fwd.hppvector.hpp
vector
vector_c.hppvoid.hppvoid_fwd.hppzip_view.hpp
mqtt5.hpp
mqtt5
msm
multi_array.hpp
multi_array
multi_index
composite_key.hpp
detail
global_fun.hpphashed_index.hpphashed_index_fwd.hppidentity.hppidentity_fwd.hppindexed_by.hppkey.hppkey_extractors.hppmem_fun.hppmember.hppordered_index.hppordered_index_fwd.hpprandom_access_index.hpprandom_access_index_fwd.hppranked_index.hppranked_index_fwd.hppsafe_mode_errors.hppsequenced_index.hppsequenced_index_fwd.hpptag.hpp
multi_index_container.hppmulti_index_container_fwd.hpp
multiprecision
mysql.hpp
mysql
any_address.hppany_connection.hppbad_field_access.hppblob.hppblob_view.hppbuffer_params.hppcharacter_set.hppclient_errc.hppcolumn_type.hppcommon_server_errc.hppconnect_params.hppconnection.hppconnection_pool.hppconstant_string_view.hppdate.hppdatetime.hppdays.hppdefaults.hpp
detail
diagnostics.hpperror_categories.hpperror_code.hpperror_with_diagnostics.hppescape_string.hppexecution_state.hppfield.hppfield_kind.hppfield_view.hppformat_sql.hpphandshake_params.hpp
impl
is_fatal_error.hppmariadb_collations.hppmariadb_server_errc.hppmetadata.hppmetadata_collection_view.hppmetadata_mode.hppmysql_collations.hppmysql_server_errc.hpppfr.hpppipeline.hpppool_params.hppresults.hppresultset.hppresultset_view.hpprow.hpprow_view.hpprows.hpprows_view.hppsequence.hppsrc.hppssl_mode.hppstatement.hppstatic_execution_state.hppstatic_results.hppstring_view.hpptcp.hpptcp_ssl.hppthrow_on_error.hpptime.hppunderlying_row.hppunix.hppunix_ssl.hppwith_diagnostics.hppwith_params.hpp
next_prior.hppnon_type.hppnoncopyable.hppnondet_random.hppnone.hppnone_t.hpp
nowide
numeric
conversion
interval.hpp
interval
odeint.hpp
odeint
algebra
config.hpp
external
integrate
iterator
stepper
adams_bashforth.hppadams_bashforth_moulton.hppadams_moulton.hppadaptive_adams_bashforth_moulton.hpp
base
bulirsch_stoer.hppbulirsch_stoer_dense_out.hppcontrolled_adams_bashforth_moulton.hppcontrolled_runge_kutta.hppcontrolled_step_result.hppdense_output_runge_kutta.hpp
detail
euler.hppexplicit_error_generic_rk.hppexplicit_generic_rk.hppextrapolation_stepper.hppgeneration.hpp
generation
implicit_euler.hppmodified_midpoint.hpprosenbrock4.hpprosenbrock4_controller.hpprosenbrock4_dense_output.hpprunge_kutta4.hpprunge_kutta4_classic.hpprunge_kutta_cash_karp54.hpprunge_kutta_cash_karp54_classic.hpprunge_kutta_dopri5.hpprunge_kutta_fehlberg78.hppstepper_categories.hppsymplectic_euler.hppsymplectic_rkn_sb3a_m4_mclachlan.hppsymplectic_rkn_sb3a_mclachlan.hppvelocity_verlet.hpp
tools
util
version.hpp
ublas
operators.hppoperators_v1.hppoptional.hpp
optional
outcome.hpp
outcome
parameter.hpp
parameter
are_tagged_arguments.hpp
aux_
binding.hppcompose.hppconfig.hppdeduced.hppis_argument_pack.hppkeyword.hppkeyword_fwd.hppmacros.hppmatch.hppname.hppnested_keyword.hppoptional.hppparameters.hpppreprocessor.hpppreprocessor_no_spec.hpprequired.hpptemplate_keyword.hppvalue_type.hpp
pending
phoenix.hpp
phoenix
bind.hpp
bind
config.hppcore.hpp
core
debug.hppfunction.hpp
function
fusion.hpp
fusion
object.hpp
object
operator.hpp
operator
phoenix.hppscope.hpp
scope
statement.hpp
statement
stl.hpp
stl
support
version.hpp
pointee.hpppointer_cast.hpppointer_to_other.hpp
polygon
polymorphic_cast.hpppolymorphic_pointer_cast.hpp
pool
predef.h
predef
preprocessor.hpp
preprocessor
arithmetic.hpp
arithmetic
array.hpp
array
assert_msg.hppcat.hppcomma.hppcomma_if.hppcomparison.hpp
comparison
config
control.hpp
control
debug.hpp
debug
dec.hpp
detail
empty.hppenum.hppenum_params.hppenum_params_with_a_default.hppenum_params_with_defaults.hppenum_shifted.hppenum_shifted_params.hppexpand.hppexpr_if.hppfacilities.hpp
facilities
for.hppidentity.hppif.hppinc.hppiterate.hppiteration.hpp
iteration
library.hpplimits.hpplist.hpp
list
logical.hpp
logical
max.hppmin.hpppunctuation.hpp
punctuation
repeat.hpprepeat_2nd.hpprepeat_3rd.hpprepeat_from_to.hpprepeat_from_to_2nd.hpprepeat_from_to_3rd.hpprepetition.hpp
repetition
selection.hpp
selection
seq.hpp
seq
slot.hpp
slot
stringize.hpptuple.hpp
tuple
variadic.hpp
variadic
while.hppwstringize.hpp
program_options.hpp
program_options
property_map
property_tree
proto
args.hppcontext.hpp
context
core.hppdebug.hppdeep_copy.hpp
detail
domain.hppeval.hppexpr.hppextends.hppfunctional.hpp
functional
fusion.hppgenerate.hppliteral.hppmake_expr.hppmatches.hppoperators.hppproto.hppproto_fwd.hppproto_typeof.hpprepeat.hpptags.hpptraits.hpptransform.hpp
transform
ptr_container
qvm.hpp
qvm
qvm_lite.hpprandom.hpp
random
additive_combine.hppbernoulli_distribution.hppbeta_distribution.hppbinomial_distribution.hppcauchy_distribution.hppchi_squared_distribution.hpp
detail
discard_block.hppdiscrete_distribution.hppexponential_distribution.hppextreme_value_distribution.hppfaure.hppfisher_f_distribution.hppgamma_distribution.hppgeneralized_inverse_gaussian_distribution.hppgenerate_canonical.hppgeometric_distribution.hpphyperexponential_distribution.hppindependent_bits.hppinverse_gaussian_distribution.hppinversive_congruential.hpplagged_fibonacci.hpplaplace_distribution.hpplinear_congruential.hpplinear_feedback_shift.hpplognormal_distribution.hppmersenne_twister.hppmixmax.hppnegative_binomial_distribution.hppniederreiter_base2.hppnon_central_chi_squared_distribution.hppnormal_distribution.hpppiecewise_constant_distribution.hpppiecewise_linear_distribution.hpppoisson_distribution.hpprandom_device.hpprandom_number_generator.hppranlux.hppseed_seq.hppshuffle_order.hppshuffle_output.hppsobol.hppsplitmix64.hppstudent_t_distribution.hppsubtract_with_carry.hpptaus88.hpptraits.hpptriangle_distribution.hppuniform_01.hppuniform_int.hppuniform_int_distribution.hppuniform_on_sphere.hppuniform_real.hppuniform_real_distribution.hppuniform_smallint.hppvariate_generator.hppweibull_distribution.hppxor_combine.hppxoshiro.hpp
range.hpp
range
adaptor
adaptors.hppalgorithm.hpp
algorithm
algorithm_ext.hpp
algorithm_ext
any_range.hppas_array.hppas_literal.hppatl.hppbegin.hppcategory.hppcombine.hppconcepts.hppconfig.hppconst_iterator.hppconst_reverse_iterator.hppcounting_range.hpp
detail
difference_type.hppdistance.hppempty.hppend.hppfunctions.hpphas_range_iterator.hppirange.hppistream_range.hppiterator.hppiterator_range.hppiterator_range_core.hppiterator_range_hash.hppiterator_range_io.hppjoin.hppmetafunctions.hppmfc.hppmfc_map.hppmutable_iterator.hppnumeric.hpppointer.hpprange_fwd.hpprbegin.hppreference.hpprend.hppresult_iterator.hppreverse_iterator.hppreverse_result_iterator.hppsize.hppsize_type.hppsub_range.hpptraversal.hppvalue_type.hpp
ratio.hpp
ratio
rational.hppref.hppregex.hregex.hpp
regex
concepts.hppconfig.hpp
config
icu.hppmfc.hpppattern_except.hpp
pending
regex_traits.hppuser.hpp
v4
v5
regex_fwd.hpp
scope
scope_exit.hppscoped_array.hppscoped_ptr.hpp
serialization
shared_array.hppshared_container_iterator.hppshared_ptr.hppsmart_ptr.hpp
smart_ptr
allocate_local_shared_array.hppallocate_shared_array.hppallocate_unique.hppatomic_shared_ptr.hppbad_weak_ptr.hpp
detail
enable_shared_from.hppenable_shared_from_raw.hppenable_shared_from_this.hppintrusive_ptr.hppintrusive_ref_counter.hpplocal_shared_ptr.hppmake_local_shared.hppmake_local_shared_array.hppmake_local_shared_object.hppmake_shared.hppmake_shared_array.hppmake_shared_object.hppmake_unique.hppowner_equal_to.hppowner_hash.hppowner_less.hppscoped_array.hppscoped_ptr.hppshared_array.hppshared_ptr.hppweak_ptr.hpp
spirit.hpp
spirit
home
classic.hpp
classic
actor.hpp
actor
attribute.hpp
attribute
core.hpp
core
debug.hpp
debug
dynamic.hpp
dynamic
error_handling.hpp
error_handling
iterator.hpp
iterator
meta.hpp
meta
namespace.hppphoenix.hpp
phoenix
symbols.hpp
symbols
tree
utility.hpp
utility
version.hpp
karma.hpp
karma
action.hpp
action
auto.hpp
auto
auxiliary.hpp
auxiliary
binary.hpp
binary
char.hpp
char
delimit_flag.hppdelimit_out.hpp
detail
directive.hpp
directive
domain.hppformat.hppformat_auto.hppgenerate.hppgenerate_attr.hppgenerator.hppmeta_compiler.hppnonterminal.hpp
nonterminal
numeric.hpp
numeric
operator.hpp
operator
phoenix_attributes.hppreference.hppstream.hpp
stream
string.hpp
string
what.hpp
lex.hpp
lex
qi.hpp
qi
support.hpp
support
action_dispatch.hppadapt_adt_attributes.hpp
algorithm
argument.hppargument_expression.hppassert_msg.hppattributes.hppattributes_fwd.hppauto.hpp
auto
auxiliary
char_class.hpp
char_encoding
char_set
common_terminals.hppcontainer.hppcontext.hpp
detail
extended_variant.hpphandles_container.hpphas_semantic_action.hppinfo.hpp
iterators
lazy.hpplimits.hppmake_component.hppmeta_compiler.hppmodify.hppmulti_pass.hppmulti_pass_wrapper.hpp
nonterminal
numeric_traits.hppsequence_base_id.hppstring_traits.hppterminal.hppterminal_expression.hppunused.hpputf8.hpputree.hpp
utree
x3.hpp
x3
auxiliary.hpp
auxiliary
binary.hpp
binary
char.hpp
char
core.hpp
core
directive.hpp
directive
nonterminal.hpp
nonterminal
numeric.hpp
numeric
operator.hpp
operator
string.hpp
string
support
version.hpp
include
classic.hppclassic_actions.hppclassic_actor.hppclassic_alternative.hppclassic_as_parser.hppclassic_assert.hppclassic_assign_actor.hppclassic_assign_key_actor.hppclassic_ast.hppclassic_ast_fwd.hppclassic_attribute.hppclassic_basic_chset.hppclassic_chset.hppclassic_chset_operators.hppclassic_clear_actor.hppclassic_closure.hppclassic_closure_context.hppclassic_closure_fwd.hppclassic_common.hppclassic_common_fwd.hppclassic_composite.hppclassic_config.hppclassic_confix.hppclassic_confix_fwd.hppclassic_core.hppclassic_debug.hppclassic_debug_node.hppclassic_decrement_actor.hppclassic_difference.hppclassic_directives.hppclassic_distinct.hppclassic_distinct_fwd.hppclassic_dynamic.hppclassic_epsilon.hppclassic_erase_actor.hppclassic_error_handling.hppclassic_escape_char.hppclassic_escape_char_fwd.hppclassic_exceptions.hppclassic_exceptions_fwd.hppclassic_exclusive_or.hppclassic_file_iterator.hppclassic_file_iterator_fwd.hppclassic_fixed_size_queue.hppclassic_flush_multi_pass.hppclassic_for.hppclassic_functor_parser.hppclassic_fundamental.hppclassic_grammar.hppclassic_grammar_def.hppclassic_grammar_def_fwd.hppclassic_if.hppclassic_increment_actor.hppclassic_insert_at_actor.hppclassic_insert_key_actor.hppclassic_intersection.hppclassic_iterator.hppclassic_kleene_star.hppclassic_lazy.hppclassic_list.hppclassic_lists.hppclassic_lists_fwd.hppclassic_loops.hppclassic_match.hppclassic_meta.hppclassic_minimal.hppclassic_multi_pass.hppclassic_multi_pass_fwd.hppclassic_nil.hppclassic_no_actions.hppclassic_numerics.hppclassic_numerics_fwd.hppclassic_operators.hppclassic_optional.hppclassic_parametric.hppclassic_parse_tree.hppclassic_parse_tree_fwd.hppclassic_parse_tree_utils.hppclassic_parser.hppclassic_parser_context.hppclassic_parser_id.hppclassic_parser_names.hppclassic_parser_traits.hppclassic_position_iterator.hppclassic_position_iterator_fwd.hppclassic_positive.hppclassic_primitives.hppclassic_push_back_actor.hppclassic_push_front_actor.hppclassic_range_run.hppclassic_ref_actor.hppclassic_ref_const_ref_actor.hppclassic_ref_const_ref_const_ref_a.hppclassic_ref_const_ref_value_actor.hppclassic_ref_value_actor.hppclassic_refactoring.hppclassic_regex.hppclassic_rule.hppclassic_rule_alias.hppclassic_rule_parser.hppclassic_safe_bool.hppclassic_scanner.hppclassic_scanner_fwd.hppclassic_scoped_lock.hppclassic_select.hppclassic_sequence.hppclassic_sequential_and.hppclassic_sequential_or.hppclassic_skipper.hppclassic_skipper_fwd.hppclassic_spirit.hppclassic_static.hppclassic_stored_rule.hppclassic_stored_rule_fwd.hppclassic_subrule.hppclassic_subrule_fwd.hppclassic_swap_actor.hppclassic_switch.hppclassic_symbols.hppclassic_symbols_fwd.hppclassic_traverse.hppclassic_tree_to_xml.hppclassic_typeof.hppclassic_utility.hppclassic_version.hppclassic_while.hppkarma.hppkarma_action.hppkarma_alternative.hppkarma_and_predicate.hppkarma_as.hppkarma_attr_cast.hppkarma_auto.hppkarma_auxiliary.hppkarma_binary.hppkarma_bool.hppkarma_buffer.hppkarma_center_alignment.hppkarma_char.hppkarma_char_.hppkarma_char_class.hppkarma_columns.hppkarma_delimit.hppkarma_directive.hppkarma_domain.hppkarma_duplicate.hppkarma_eol.hppkarma_eps.hppkarma_format.hppkarma_format_attr.hppkarma_format_auto.hppkarma_generate.hppkarma_generate_attr.hppkarma_generate_auto.hppkarma_grammar.hppkarma_int.hppkarma_kleene.hppkarma_lazy.hppkarma_left_alignment.hppkarma_list.hppkarma_maxwidth.hppkarma_no_delimit.hppkarma_nonterminal.hppkarma_not_predicate.hppkarma_numeric.hppkarma_omit.hppkarma_operator.hppkarma_optional.hppkarma_phoenix_attributes.hppkarma_plus.hppkarma_real.hppkarma_repeat.hppkarma_right_alignment.hppkarma_rule.hppkarma_sequence.hppkarma_stream.hppkarma_strict_relaxed.hppkarma_string.hppkarma_symbols.hppkarma_uint.hppkarma_upper_lower_case.hppkarma_verbatim.hppkarma_what.hpplex.hpplex_char_token_def.hpplex_domain.hpplex_generate_static_lexertl.hpplex_lexer.hpplex_lexertl.hpplex_lexertl_position_token.hpplex_lexertl_token.hpplex_plain_token.hpplex_primitives.hpplex_static_lexertl.hpplex_tokenize_and_parse.hpplex_tokenize_and_parse_attr.hppphoenix.hppphoenix1.hppphoenix1_actor.hppphoenix1_binders.hppphoenix1_casts.hppphoenix1_closures.hppphoenix1_composite.hppphoenix1_functions.hppphoenix1_new.hppphoenix1_operators.hppphoenix1_primitives.hppphoenix1_special_ops.hppphoenix1_statements.hppphoenix1_tuple_helpers.hppphoenix1_tuples.hppphoenix_algorithm.hppphoenix_bind.hppphoenix_container.hppphoenix_core.hppphoenix_function.hppphoenix_fusion.hppphoenix_limits.hppphoenix_object.hppphoenix_operator.hppphoenix_scope.hppphoenix_statement.hppphoenix_stl.hppphoenix_version.hppqi.hppqi_action.hppqi_alternative.hppqi_and_predicate.hppqi_as.hppqi_as_string.hppqi_attr.hppqi_attr_cast.hppqi_auto.hppqi_auxiliary.hppqi_binary.hppqi_bool.hppqi_char.hppqi_char_.hppqi_char_class.hppqi_copy.hppqi_core.hppqi_difference.hppqi_directive.hppqi_domain.hppqi_eoi.hppqi_eol.hppqi_eps.hppqi_expect.hppqi_grammar.hppqi_hold.hppqi_int.hppqi_kleene.hppqi_lazy.hppqi_lexeme.hppqi_list.hppqi_lit.hppqi_match.hppqi_match_attr.hppqi_match_auto.hppqi_matches.hppqi_no_case.hppqi_no_skip.hppqi_nonterminal.hppqi_not_predicate.hppqi_numeric.hppqi_omit.hppqi_operator.hppqi_optional.hppqi_parse.hppqi_parse_attr.hppqi_parse_auto.hppqi_permutation.hppqi_plus.hppqi_raw.hppqi_real.hppqi_repeat.hppqi_rule.hppqi_sequence.hppqi_sequential_or.hppqi_skip.hppqi_stream.hppqi_string.hppqi_symbols.hppqi_uint.hppqi_what.hppsupport.hppsupport_adapt_adt_attributes.hppsupport_any.hppsupport_any_if.hppsupport_any_if_ns.hppsupport_any_if_ns_so.hppsupport_any_ns.hppsupport_any_ns_so.hppsupport_argument.hppsupport_ascii.hppsupport_attributes.hppsupport_attributes_fwd.hppsupport_auto.hppsupport_char_class.hppsupport_container.hppsupport_extended_variant.hppsupport_info.hppsupport_iso8859_1.hppsupport_istream_iterator.hppsupport_line_pos_iterator.hppsupport_locals.hppsupport_look_ahead.hppsupport_modify.hppsupport_multi_pass.hppsupport_multi_pass_fwd.hppsupport_ostream_iterator.hppsupport_standard.hppsupport_standard_wide.hppsupport_string_traits.hppsupport_unused.hppsupport_utree.hppversion.hpp
repository
version.hpp
static_assert.hppstatic_string.hpp
static_string
swap.hppsystem.hpp
system
thread.hpp
thread
barrier.hppcaller_context.hppcompletion_latch.hpp
concurrent_queues
condition.hppcondition_variable.hpp
csbl
cv_status.hpp
detail
exceptional_ptr.hppexceptions.hppexecutor.hpp
executors
experimental
externally_locked.hppexternally_locked_stream.hppfuture.hpp
futures
interruption.hppis_locked_by_this_thread.hpplatch.hpplock_algorithms.hpplock_concepts.hpplock_factories.hpplock_guard.hpplock_options.hpplock_traits.hpplock_types.hpplockable_adapter.hpplockable_concepts.hpplockable_traits.hpplocks.hppmutex.hppnull_mutex.hpponce.hppostream_buffer.hpppoly_lockable.hpppoly_lockable_adapter.hpppoly_shared_lockable.hpppoly_shared_lockable_adapter.hpp
pthread
recursive_mutex.hppreverse_lock.hppscoped_thread.hppshared_lock_guard.hppshared_mutex.hppstrict_lock.hppsync_bounded_queue.hppsync_queue.hppsynchronized_value.hpptestable_mutex.hppthread.hppthread_functors.hppthread_guard.hppthread_only.hppthread_pool.hppthread_time.hpptss.hppuser_scheduler.hpp
v2
win32
with_lock_guard.hppxtime.hpp
throw_exception.hpptoken_functions.hpptoken_iterator.hpptokenizer.hpp
tti
tuple
type.hpptype_index.hpp
type_index
type_traits.hpp
type_traits
add_const.hppadd_cv.hppadd_lvalue_reference.hppadd_pointer.hppadd_reference.hppadd_rvalue_reference.hppadd_volatile.hppaligned_storage.hppalignment_of.hppalignment_traits.hpparithmetic_traits.hpparray_traits.hppbroken_compiler_spec.hppcommon_type.hppcomposite_traits.hppconditional.hppconfig.hppconjunction.hppconversion_traits.hppcopy_cv.hppcopy_cv_ref.hppcopy_reference.hppcv_traits.hppdecay.hppdeclval.hpp
detail
detected.hppdetected_or.hppdisjunction.hppenable_if.hppextent.hppfloating_point_promotion.hppfunction_traits.hpphas_bit_and.hpphas_bit_and_assign.hpphas_bit_or.hpphas_bit_or_assign.hpphas_bit_xor.hpphas_bit_xor_assign.hpphas_complement.hpphas_dereference.hpphas_divides.hpphas_divides_assign.hpphas_equal_to.hpphas_greater.hpphas_greater_equal.hpphas_left_shift.hpphas_left_shift_assign.hpphas_less.hpphas_less_equal.hpphas_logical_and.hpphas_logical_not.hpphas_logical_or.hpphas_minus.hpphas_minus_assign.hpphas_modulus.hpphas_modulus_assign.hpphas_multiplies.hpphas_multiplies_assign.hpphas_negate.hpphas_new_operator.hpphas_not_equal_to.hpphas_nothrow_assign.hpphas_nothrow_constructor.hpphas_nothrow_copy.hpphas_nothrow_destructor.hpphas_operator.hpphas_plus.hpphas_plus_assign.hpphas_post_decrement.hpphas_post_increment.hpphas_pre_decrement.hpphas_pre_increment.hpphas_right_shift.hpphas_right_shift_assign.hpphas_trivial_assign.hpphas_trivial_constructor.hpphas_trivial_copy.hpphas_trivial_destructor.hpphas_trivial_move_assign.hpphas_trivial_move_constructor.hpphas_unary_minus.hpphas_unary_plus.hpphas_virtual_destructor.hppice.hppintegral_constant.hppintegral_promotion.hppintrinsics.hppis_abstract.hppis_arithmetic.hppis_array.hppis_assignable.hppis_base_and_derived.hppis_base_of.hppis_base_of_tr1.hppis_bounded_array.hppis_class.hppis_complete.hppis_complex.hppis_compound.hppis_const.hppis_constructible.hppis_convertible.hppis_copy_assignable.hppis_copy_constructible.hppis_default_constructible.hppis_destructible.hppis_detected.hppis_detected_convertible.hppis_detected_exact.hppis_empty.hppis_enum.hppis_final.hppis_float.hppis_floating_point.hppis_function.hppis_fundamental.hppis_integral.hppis_list_constructible.hppis_lvalue_reference.hppis_member_function_pointer.hppis_member_object_pointer.hppis_member_pointer.hppis_noncopyable.hppis_nothrow_move_assignable.hppis_nothrow_move_constructible.hppis_nothrow_swappable.hppis_object.hppis_pod.hppis_pointer.hppis_polymorphic.hppis_reference.hppis_rvalue_reference.hppis_same.hppis_scalar.hppis_scoped_enum.hppis_signed.hppis_stateless.hppis_swappable.hppis_trivially_copyable.hppis_unbounded_array.hppis_union.hppis_unscoped_enum.hppis_unsigned.hppis_virtual_base_of.hppis_void.hppis_volatile.hppmake_signed.hppmake_unsigned.hppmake_void.hppnegation.hppnonesuch.hppobject_traits.hpppromote.hpprank.hppreference_traits.hppremove_all_extents.hppremove_bounds.hppremove_const.hppremove_cv.hppremove_cv_ref.hppremove_extent.hppremove_pointer.hppremove_reference.hppremove_volatile.hppsame_traits.hpptransform_traits.hpptype_identity.hpptype_with_alignment.hpp
typeof
units
absolute.hppbase_dimension.hppbase_unit.hpp
base_units
cmath.hppconfig.hppconversion.hppderived_dimension.hpp
detail
dim.hppdimension.hppdimensionless_quantity.hppdimensionless_type.hppdimensionless_unit.hppget_dimension.hppget_system.hppheterogeneous_system.hpphomogeneous_system.hppio.hppis_dim.hppis_dimension_list.hppis_dimensionless.hppis_dimensionless_quantity.hppis_dimensionless_unit.hppis_quantity.hppis_quantity_of_dimension.hppis_quantity_of_system.hppis_unit.hppis_unit_of_dimension.hppis_unit_of_system.hpplambda.hpplimits.hppmake_scaled_unit.hppmake_system.hppoperators.hppphysical_dimensions.hpp
physical_dimensions
pow.hppquantity.hppreduce_unit.hppscale.hppscaled_base_unit.hppstatic_constant.hppstatic_rational.hpp
systems
abstract.hpp
angle
cgs.hpp
cgs
detail
information.hpp
information
si.hpp
si
temperature
unit.hppunits_fwd.hpp
unordered
unordered_map.hppunordered_set.hpputility.hpp
utility
uuid.hpp
uuid
variant.hpp
variant
variant2.hpp
variant2
version.hppvisit_each.hppweak_ptr.hpp
winapi
xpressive
basic_regex.hpp
detail
core
detail_fwd.hpp
dynamic
static
utility
match_results.hppregex_actions.hppregex_algorithms.hppregex_compiler.hppregex_constants.hppregex_error.hppregex_iterator.hppregex_primitives.hppregex_token_iterator.hppregex_traits.hppsub_match.hpp
traits
xpressive.hppxpressive_dynamic.hppxpressive_fwd.hppxpressive_static.hppxpressive_typeof.hpp
cpprestsdk

@ -0,0 +1,555 @@
/***
* Copyright (C) Microsoft. All rights reserved.
* Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
*
* =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
*
* HTTP Library: Oauth 2.0
*
* For the latest on this and related APIs, please see: https://github.com/Microsoft/cpprestsdk
*
* =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
****/
#pragma once
#ifndef CASA_OAUTH2_H
#define CASA_OAUTH2_H
#include "cpprest/details/web_utilities.h"
#include "cpprest/http_msg.h"
namespace web
{
namespace http
{
namespace client
{
// Forward declaration to avoid circular include dependency.
class http_client_config;
} // namespace client
/// oAuth 2.0 library.
namespace oauth2
{
namespace details
{
class oauth2_handler;
// Constant strings for OAuth 2.0.
typedef utility::string_t oauth2_string;
class oauth2_strings
{
public:
#define _OAUTH2_STRINGS
#define DAT(a_, b_) _ASYNCRTIMP static const oauth2_string a_;
#include "cpprest/details/http_constants.dat"
#undef _OAUTH2_STRINGS
#undef DAT
};
} // namespace details
/// oAuth functionality is currently in beta.
namespace experimental
{
/// <summary>
/// Exception type for OAuth 2.0 errors.
/// </summary>
class oauth2_exception : public std::exception
{
public:
oauth2_exception(utility::string_t msg) : m_msg(utility::conversions::to_utf8string(std::move(msg))) {}
~oauth2_exception() CPPREST_NOEXCEPT {}
const char* what() const CPPREST_NOEXCEPT { return m_msg.c_str(); }
private:
std::string m_msg;
};
/// <summary>
/// OAuth 2.0 token and associated information.
/// </summary>
class oauth2_token
{
public:
/// <summary>
/// Value for undefined expiration time in expires_in().
/// </summary>
enum
{
undefined_expiration = -1
};
oauth2_token(utility::string_t access_token = utility::string_t())
: m_access_token(std::move(access_token)), m_expires_in(undefined_expiration)
{
}
/// <summary>
/// Get access token validity state.
/// If true, access token is a valid.
/// </summary>
/// <returns>Access token validity state.</returns>
bool is_valid_access_token() const { return !access_token().empty(); }
/// <summary>
/// Get access token.
/// </summary>
/// <returns>Access token string.</returns>
const utility::string_t& access_token() const { return m_access_token; }
/// <summary>
/// Set access token.
/// </summary>
/// <param name="access_token">Access token string to set.</param>
void set_access_token(utility::string_t access_token) { m_access_token = std::move(access_token); }
/// <summary>
/// Get refresh token.
/// </summary>
/// <returns>Refresh token string.</returns>
const utility::string_t& refresh_token() const { return m_refresh_token; }
/// <summary>
/// Set refresh token.
/// </summary>
/// <param name="refresh_token">Refresh token string to set.</param>
void set_refresh_token(utility::string_t refresh_token) { m_refresh_token = std::move(refresh_token); }
/// <summary>
/// Get token type.
/// </summary>
/// <returns>Token type string.</returns>
const utility::string_t& token_type() const { return m_token_type; }
/// <summary>
/// Set token type.
/// </summary>
/// <param name="token_type">Token type string to set.</param>
void set_token_type(utility::string_t token_type) { m_token_type = std::move(token_type); }
/// <summary>
/// Get token scope.
/// </summary>
/// <returns>Token scope string.</returns>
const utility::string_t& scope() const { return m_scope; }
/// <summary>
/// Set token scope.
/// </summary>
/// <param name="scope">Token scope string to set.</param>
void set_scope(utility::string_t scope) { m_scope = std::move(scope); }
/// <summary>
/// Get the lifetime of the access token in seconds.
/// For example, 3600 means the access token will expire in one hour from
/// the time when access token response was generated by the authorization server.
/// Value of undefined_expiration means expiration time is either
/// unset or that it was not returned by the server with the access token.
/// </summary>
/// <returns>Lifetime of the access token in seconds or undefined_expiration if not set.</returns>
int64_t expires_in() const { return m_expires_in; }
/// <summary>
/// Set lifetime of access token (in seconds).
/// </summary>
/// <param name="expires_in">Lifetime of access token in seconds.</param>
void set_expires_in(int64_t expires_in) { m_expires_in = expires_in; }
private:
utility::string_t m_access_token;
utility::string_t m_refresh_token;
utility::string_t m_token_type;
utility::string_t m_scope;
int64_t m_expires_in;
};
/// <summary>
/// OAuth 2.0 configuration.
///
/// Encapsulates functionality for:
/// - Authenticating requests with an access token.
/// - Performing the OAuth 2.0 authorization code grant authorization flow.
/// See: http://tools.ietf.org/html/rfc6749#section-4.1
/// - Performing the OAuth 2.0 implicit grant authorization flow.
/// See: http://tools.ietf.org/html/rfc6749#section-4.2
///
/// Performing OAuth 2.0 authorization:
/// 1. Set service and client/app parameters:
/// - Client/app key & secret (as provided by the service).
/// - The service authorization endpoint and token endpoint.
/// - Your client/app redirect URI.
/// - Use set_state() to assign a unique state string for the authorization
/// session (default: "").
/// - If needed, use set_bearer_auth() to control bearer token passing in either
/// query or header (default: header). See: http://tools.ietf.org/html/rfc6750#section-2
/// - If needed, use set_access_token_key() to set "non-standard" access token
/// key (default: "access_token").
/// - If needed, use set_implicit_grant() to enable implicit grant flow.
/// 2. Build authorization URI with build_authorization_uri() and open this in web browser/control.
/// 3. The resource owner should then clicks "Yes" to authorize your client/app, and
/// as a result the web browser/control is redirected to redirect_uri().
/// 5. Capture the redirected URI either in web control or by HTTP listener.
/// 6. Pass the redirected URI to token_from_redirected_uri() to obtain access token.
/// - The method ensures redirected URI contains same state() as set in step 1.
/// - In implicit_grant() is false, this will create HTTP request to fetch access token
/// from the service. Otherwise access token is already included in the redirected URI.
///
/// Usage for issuing authenticated requests:
/// 1. Perform authorization as above to obtain the access token or use an existing token.
/// - Some services provide option to generate access tokens for testing purposes.
/// 2. Pass the resulting oauth2_config with the access token to http_client_config::set_oauth2().
/// 3. Construct http_client with this http_client_config. As a result, all HTTP requests
/// by that client will be OAuth 2.0 authenticated.
///
/// </summary>
class oauth2_config
{
public:
oauth2_config(utility::string_t client_key,
utility::string_t client_secret,
utility::string_t auth_endpoint,
utility::string_t token_endpoint,
utility::string_t redirect_uri,
utility::string_t scope = utility::string_t(),
utility::string_t user_agent = utility::string_t())
: m_client_key(std::move(client_key))
, m_client_secret(std::move(client_secret))
, m_auth_endpoint(std::move(auth_endpoint))
, m_token_endpoint(std::move(token_endpoint))
, m_redirect_uri(std::move(redirect_uri))
, m_scope(std::move(scope))
, m_user_agent(std::move(user_agent))
, m_implicit_grant(false)
, m_bearer_auth(true)
, m_http_basic_auth(true)
, m_access_token_key(details::oauth2_strings::access_token)
{
}
/// <summary>
/// Builds an authorization URI to be loaded in the web browser/view.
/// The URI is built with auth_endpoint() as basis.
/// The implicit_grant() affects the built URI by selecting
/// either authorization code or implicit grant flow.
/// You can set generate_state to generate a new random state string.
/// </summary>
/// <param name="generate_state">If true, a new random state() string is generated
/// which replaces the current state(). If false, state() is unchanged and used as-is.</param>
/// <returns>Authorization URI string.</returns>
_ASYNCRTIMP utility::string_t build_authorization_uri(bool generate_state);
/// <summary>
/// Fetch an access token (and possibly a refresh token) based on redirected URI.
/// Behavior depends on the implicit_grant() setting.
/// If implicit_grant() is false, the URI is parsed for 'code'
/// parameter, and then token_from_code() is called with this code.
/// See: http://tools.ietf.org/html/rfc6749#section-4.1
/// Otherwise, redirect URI fragment part is parsed for 'access_token'
/// parameter, which directly contains the token(s).
/// See: http://tools.ietf.org/html/rfc6749#section-4.2
/// In both cases, the 'state' parameter is parsed and is verified to match state().
/// </summary>
/// <param name="redirected_uri">The URI where web browser/view was redirected after resource owner's
/// authorization.</param> <returns>Task that fetches the token(s) based on redirected URI.</returns>
_ASYNCRTIMP pplx::task<void> token_from_redirected_uri(const web::http::uri& redirected_uri);
/// <summary>
/// Fetches an access token (and possibly a refresh token) from the token endpoint.
/// The task creates an HTTP request to the token_endpoint() which exchanges
/// the authorization code for the token(s).
/// This also sets the refresh token if one was returned.
/// See: http://tools.ietf.org/html/rfc6749#section-4.1.3
/// </summary>
/// <param name="authorization_code">Code received via redirect upon successful authorization.</param>
/// <returns>Task that fetches token(s) based on the authorization code.</returns>
pplx::task<void> token_from_code(utility::string_t authorization_code)
{
uri_builder ub;
ub.append_query(details::oauth2_strings::grant_type, details::oauth2_strings::authorization_code, false);
ub.append_query(details::oauth2_strings::code, uri::encode_data_string(std::move(authorization_code)), false);
ub.append_query(details::oauth2_strings::redirect_uri, uri::encode_data_string(redirect_uri()), false);
return _request_token(ub);
}
/// <summary>
/// Fetches a new access token (and possibly a new refresh token) using the refresh token.
/// The task creates a HTTP request to the token_endpoint().
/// If successful, resulting access token is set as active via set_token().
/// See: http://tools.ietf.org/html/rfc6749#section-6
/// This also sets a new refresh token if one was returned.
/// </summary>
/// <returns>Task that fetches the token(s) using the refresh token.</returns>
pplx::task<void> token_from_refresh()
{
uri_builder ub;
ub.append_query(details::oauth2_strings::grant_type, details::oauth2_strings::refresh_token, false);
ub.append_query(
details::oauth2_strings::refresh_token, uri::encode_data_string(token().refresh_token()), false);
return _request_token(ub);
}
/// <summary>
/// Fetches an access token from the token endpoint using client credentials grant type.
/// The task creates an HTTP request to the token_endpoint() using
/// client authentication as the authorization grant.
/// See: http://tools.ietf.org/html/rfc6749#section-4.4
/// </summary>
/// <returns>Task that fetches token(s) using client credentials.</returns>
pplx::task<void> token_from_client_credentials()
{
uri_builder ub;
ub.append_query(
details::oauth2_strings::grant_type, details::oauth2_strings::client_credentials, false);
return _request_token(ub);
}
/// <summary>
/// Returns enabled state of the configuration.
/// The oauth2_handler will perform OAuth 2.0 authentication only if
/// this method returns true.
/// Return value is true if access token is valid (=fetched or manually set).
/// </summary>
/// <returns>The configuration enabled state.</returns>
bool is_enabled() const { return token().is_valid_access_token(); }
/// <summary>
/// Get client key.
/// </summary>
/// <returns>Client key string.</returns>
const utility::string_t& client_key() const { return m_client_key; }
/// <summary>
/// Set client key.
/// </summary>
/// <param name="client_key">Client key string to set.</param>
void set_client_key(utility::string_t client_key) { m_client_key = std::move(client_key); }
/// <summary>
/// Get client secret.
/// </summary>
/// <returns>Client secret string.</returns>
const utility::string_t& client_secret() const { return m_client_secret; }
/// <summary>
/// Set client secret.
/// </summary>
/// <param name="client_secret">Client secret string to set.</param>
void set_client_secret(utility::string_t client_secret) { m_client_secret = std::move(client_secret); }
/// <summary>
/// Get authorization endpoint URI string.
/// </summary>
/// <returns>Authorization endpoint URI string.</returns>
const utility::string_t& auth_endpoint() const { return m_auth_endpoint; }
/// <summary>
/// Set authorization endpoint URI string.
/// </summary>
/// <param name="auth_endpoint">Authorization endpoint URI string to set.</param>
void set_auth_endpoint(utility::string_t auth_endpoint) { m_auth_endpoint = std::move(auth_endpoint); }
/// <summary>
/// Get token endpoint URI string.
/// </summary>
/// <returns>Token endpoint URI string.</returns>
const utility::string_t& token_endpoint() const { return m_token_endpoint; }
/// <summary>
/// Set token endpoint URI string.
/// </summary>
/// <param name="token_endpoint">Token endpoint URI string to set.</param>
void set_token_endpoint(utility::string_t token_endpoint) { m_token_endpoint = std::move(token_endpoint); }
/// <summary>
/// Get redirect URI string.
/// </summary>
/// <returns>Redirect URI string.</returns>
const utility::string_t& redirect_uri() const { return m_redirect_uri; }
/// <summary>
/// Set redirect URI string.
/// </summary>
/// <param name="redirect_uri">Redirect URI string to set.</param>
void set_redirect_uri(utility::string_t redirect_uri) { m_redirect_uri = std::move(redirect_uri); }
/// <summary>
/// Get scope used in authorization for token.
/// </summary>
/// <returns>Scope string used in authorization.</returns>
const utility::string_t& scope() const { return m_scope; }
/// <summary>
/// Set scope for authorization for token.
/// </summary>
/// <param name="scope">Scope string for authorization for token.</param>
void set_scope(utility::string_t scope) { m_scope = std::move(scope); }
/// <summary>
/// Get client state string used in authorization.
/// </summary>
/// <returns>Client state string used in authorization.</returns>
const utility::string_t& state() { return m_state; }
/// <summary>
/// Set client state string for authorization for token.
/// The state string is used in authorization for security reasons
/// (to uniquely identify authorization sessions).
/// If desired, suitably secure state string can be automatically generated
/// by build_authorization_uri().
/// A good state string consist of 30 or more random alphanumeric characters.
/// </summary>
/// <param name="state">Client authorization state string to set.</param>
void set_state(utility::string_t state) { m_state = std::move(state); }
/// <summary>
/// Get token.
/// </summary>
/// <returns>Token.</returns>
const oauth2_token& token() const { return m_token; }
/// <summary>
/// Set token.
/// </summary>
/// <param name="token">Token to set.</param>
void set_token(oauth2_token token) { m_token = std::move(token); }
/// <summary>
/// Get implicit grant setting for authorization.
/// </summary>
/// <returns>Implicit grant setting for authorization.</returns>
bool implicit_grant() const { return m_implicit_grant; }
/// <summary>
/// Set implicit grant setting for authorization.
/// False means authorization code grant is used for authorization.
/// True means implicit grant is used.
/// Default: False.
/// </summary>
/// <param name="implicit_grant">The implicit grant setting to set.</param>
void set_implicit_grant(bool implicit_grant) { m_implicit_grant = implicit_grant; }
/// <summary>
/// Get bearer token authentication setting.
/// </summary>
/// <returns>Bearer token authentication setting.</returns>
bool bearer_auth() const { return m_bearer_auth; }
/// <summary>
/// Set bearer token authentication setting.
/// This must be selected based on what the service accepts.
/// True means access token is passed in the request header. (http://tools.ietf.org/html/rfc6750#section-2.1)
/// False means access token in passed in the query parameters. (http://tools.ietf.org/html/rfc6750#section-2.3)
/// Default: True.
/// </summary>
/// <param name="bearer_auth">The bearer token authentication setting to set.</param>
void set_bearer_auth(bool bearer_auth) { m_bearer_auth = bearer_auth; }
/// <summary>
/// Get HTTP Basic authentication setting for token endpoint.
/// </summary>
/// <returns>HTTP Basic authentication setting for token endpoint.</returns>
bool http_basic_auth() const { return m_http_basic_auth; }
/// <summary>
/// Set HTTP Basic authentication setting for token endpoint.
/// This setting must be selected based on what the service accepts.
/// True means HTTP Basic authentication is used for the token endpoint.
/// False means client key & secret are passed in the HTTP request body.
/// Default: True.
/// </summary>
/// <param name="http_basic_auth">The HTTP Basic authentication setting to set.</param>
void set_http_basic_auth(bool http_basic_auth) { m_http_basic_auth = http_basic_auth; }
/// <summary>
/// Get access token key.
/// </summary>
/// <returns>Access token key string.</returns>
const utility::string_t& access_token_key() const { return m_access_token_key; }
/// <summary>
/// Set access token key.
/// If the service requires a "non-standard" key you must set it here.
/// Default: "access_token".
/// </summary>
void set_access_token_key(utility::string_t access_token_key) { m_access_token_key = std::move(access_token_key); }
/// <summary>
/// Get the web proxy object
/// </summary>
/// <returns>A reference to the web proxy object.</returns>
const web_proxy& proxy() const { return m_proxy; }
/// <summary>
/// Set the web proxy object that will be used by token_from_code and token_from_refresh
/// </summary>
/// <param name="proxy">A reference to the web proxy object.</param>
void set_proxy(const web_proxy& proxy) { m_proxy = proxy; }
/// <summary>
/// Get user agent to be used in oauth2 flows.
/// </summary>
/// <returns>User agent string.</returns>
const utility::string_t& user_agent() const { return m_user_agent; }
/// <summary>
/// Set user agent to be used in oauth2 flows.
/// If none is provided a default user agent is provided.
/// </summary>
void set_user_agent(utility::string_t user_agent) { m_user_agent = std::move(user_agent); }
private:
friend class web::http::client::http_client_config;
friend class web::http::oauth2::details::oauth2_handler;
oauth2_config() : m_implicit_grant(false), m_bearer_auth(true), m_http_basic_auth(true) {}
_ASYNCRTIMP pplx::task<void> _request_token(uri_builder& request_body);
oauth2_token _parse_token_from_json(const json::value& token_json);
void _authenticate_request(http_request& req) const
{
if (bearer_auth())
{
req.headers().add(header_names::authorization, _XPLATSTR("Bearer ") + token().access_token());
}
else
{
uri_builder ub(req.request_uri());
ub.append_query(access_token_key(), token().access_token());
req.set_request_uri(ub.to_uri());
}
}
utility::string_t m_client_key;
utility::string_t m_client_secret;
utility::string_t m_auth_endpoint;
utility::string_t m_token_endpoint;
utility::string_t m_redirect_uri;
utility::string_t m_scope;
utility::string_t m_state;
utility::string_t m_user_agent;
web::web_proxy m_proxy;
bool m_implicit_grant;
bool m_bearer_auth;
bool m_http_basic_auth;
utility::string_t m_access_token_key;
oauth2_token m_token;
utility::nonce_generator m_state_generator;
};
} // namespace experimental
namespace details
{
class oauth2_handler : public http_pipeline_stage
{
public:
oauth2_handler(std::shared_ptr<experimental::oauth2_config> cfg) : m_config(std::move(cfg)) {}
virtual pplx::task<http_response> propagate(http_request request) override
{
if (m_config)
{
m_config->_authenticate_request(request);
}
return next_stage()->propagate(request);
}
private:
std::shared_ptr<experimental::oauth2_config> m_config;
};
} // namespace details
} // namespace oauth2
} // namespace http
} // namespace web
#endif