AshanGimhana's picture
Upload folder using huggingface_hub
9375c9a verified
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html xmlns:gcse="googleCustomSearch"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="shortcut icon" href="dlib-icon.ico"><meta name="verify-v1" content="02MiiaFNVzS5/u0eQhsy3/knioFHsia1X3DXRpHkE6I="><meta name="google-site-verification" content="DGSSJMKDomaDaDTIRJ8jDkv0YMx9Cz7OESbXHjjr6Jw"><title>dlib C++ Library
- API Wrappers</title><script type="text/javascript" src="dlib.js"></script><link rel="stylesheet" type="text/css" href="dlib.css"></head><body><a name="top"></a><div id="page_header"><a href="http://dlib.net"><img src="dlib-logo.png"></a></div><div id="top_content"><div id="main_menu" class="menu"><div class="menu_top"><b>The Library</b><ul class="tree"><li><a href="algorithms.html" class="menu">Algorithms</a></li><li><a href="api.html" class="menu">API Wrappers</a></li><li><a href="bayes.html" class="menu">Bayesian Nets</a></li><li><a href="compression.html" class="menu">Compression</a></li><li><a href="containers.html" class="menu">Containers</a></li><li><a href="graph_tools.html" class="menu">Graph Tools</a></li><li><a href="imaging.html" class="menu">Image Processing</a></li><li><a href="linear_algebra.html" class="menu">Linear Algebra</a></li><li><a href="ml.html" class="menu">Machine Learning</a></li><li><a href="metaprogramming.html" class="menu">Metaprogramming</a></li><li><a href="other.html" class="menu">Miscellaneous</a></li><li><a href="network.html" class="menu">Networking</a></li><li><a href="optimization.html" class="menu">Optimization</a></li><li><a href="parsing.html" class="menu">Parsing</a></li></ul><br><b>Help/Info</b><ul class="tree"><li><a href="http://blog.dlib.net" class="menu">Dlib Blog</a></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">Examples: C++</a><ul style="display:none;"><li><a href="3d_point_cloud_ex.cpp.html" class="menu">3D Point Cloud</a></li><li><a href="assignment_learning_ex.cpp.html" class="menu">Assignment Learning</a></li><li><a href="file_to_code_ex.cpp.html" class="menu">Base64 Encoder</a></li><li><a href="bayes_net_from_disk_ex.cpp.html" class="menu">Bayesian Network From Disk</a></li><li><a href="bayes_net_gui_ex.cpp.html" class="menu">Bayesian Network GUI</a></li><li><a href="bayes_net_ex.cpp.html" class="menu">Bayesian Network</a></li><li><a href="bridge_ex.cpp.html" class="menu">Bridge</a></li><li><a href="bsp_ex.cpp.html" class="menu">BSP</a></li><li><a href="svm_c_ex.cpp.html" class="menu">C-Support Vector Machine</a></li><li><a href="compress_stream_ex.cpp.html#_top" class="menu">Cmd Line Parser</a></li><li><a href="compress_stream_ex.cpp.html" class="menu">Compress Stream</a></li><li><a href="config_reader_ex.cpp.html" class="menu">Config File Reader</a></li><li><a href="custom_trainer_ex.cpp.html" class="menu">Custom Trainers</a></li><li><a href="dnn_face_recognition_ex.cpp.html" class="menu">Deep Face Recognition</a></li><li><a href="dnn_dcgan_train_ex.cpp.html" class="menu">Deep Learning DCGAN</a></li><li><a href="dnn_mmod_dog_hipsterizer.cpp.html" class="menu">Deep Learning Dog Hipsterizer</a></li><li><a href="dnn_mmod_face_detection_ex.cpp.html" class="menu">Deep Learning Face Detection</a></li><li><a href="dnn_imagenet_ex.cpp.html" class="menu">Deep Learning Imagenet Classifier</a></li><li><a href="dnn_imagenet_train_ex.cpp.html" class="menu">Deep Learning Imagenet Trainer </a></li><li><a href="dnn_inception_ex.cpp.html" class="menu">Deep Learning Inception</a></li><li><a href="dnn_instance_segmentation_train_ex.cpp.html" class="menu">Deep Learning Instance Segmentation Trainer</a></li><li><a href="dnn_instance_segmentation_ex.cpp.html" class="menu">Deep Learning Instance Segmentation</a></li><li><a href="dnn_introduction_ex.cpp.html" class="menu">Deep Learning Introduction Part 1</a></li><li><a href="dnn_introduction2_ex.cpp.html" class="menu">Deep Learning Introduction Part 2</a></li><li><a href="dnn_introduction3_ex.cpp.html" class="menu">Deep Learning Introduction Part 3</a></li><li><a href="dnn_mmod_ex.cpp.html" class="menu">Deep Learning Max-Margin Object Detection</a></li><li><a href="dnn_mmod_find_cars2_ex.cpp.html" class="menu">Deep Learning Multi-Class Vehicle Detection</a></li><li><a href="dnn_semantic_segmentation_train_ex.cpp.html" class="menu">Deep Learning Semantic Segmentation Trainer</a></li><li><a href="dnn_semantic_segmentation_ex.cpp.html" class="menu">Deep Learning Semantic Segmentation</a></li><li><a href="dnn_mmod_train_find_cars_ex.cpp.html" class="menu">Deep Learning Vehicle Detection Trainer</a></li><li><a href="dnn_mmod_find_cars_ex.cpp.html" class="menu">Deep Learning Vehicle Detection</a></li><li><a href="dnn_metric_learning_ex.cpp.html" class="menu">Deep Metric Learning Introduction</a></li><li><a href="dnn_metric_learning_on_images_ex.cpp.html" class="menu">Deep Metric Learning on Images</a></li><li><a href="dir_nav_ex.cpp.html" class="menu">Directory Navigation</a></li><li><a href="empirical_kernel_map_ex.cpp.html" class="menu">Empirical Kernel Map</a></li><li><a href="face_detection_ex.cpp.html" class="menu">Face Detection</a></li><li><a href="face_landmark_detection_ex.cpp.html" class="menu">Face Landmark Detection</a></li><li><a href="fhog_ex.cpp.html" class="menu">FHOG Feature Extraction</a></li><li><a href="fhog_object_detector_ex.cpp.html" class="menu">FHOG Object Detection</a></li><li><a href="graph_labeling_ex.cpp.html" class="menu">Graph Labeling</a></li><li><a href="gui_api_ex.cpp.html" class="menu">GUI</a></li><li><a href="hough_transform_ex.cpp.html" class="menu">Hough Transform</a></li><li><a href="server_http_ex.cpp.html" class="menu">HTTP Server</a></li><li><a href="image_ex.cpp.html" class="menu">Image</a></li><li><a href="iosockstream_ex.cpp.html" class="menu">IO Socket Streams</a></li><li><a href="server_iostream_ex.cpp.html" class="menu">IO Streams Server</a></li><li><a href="kcentroid_ex.cpp.html" class="menu">Kernel Centroid</a></li><li><a href="kkmeans_ex.cpp.html" class="menu">Kernel K-Means Clustering</a></li><li><a href="krr_regression_ex.cpp.html" class="menu">Kernel Ridge Regression</a></li><li><a href="krls_filter_ex.cpp.html" class="menu">Kernel RLS Filtering</a></li><li><a href="krls_ex.cpp.html" class="menu">Kernel RLS Regression</a></li><li><a href="krr_classification_ex.cpp.html" class="menu">KRR Classification</a></li><li><a href="learning_to_track_ex.cpp.html" class="menu">Learning to Track</a></li><li><a href="max_cost_assignment_ex.cpp.html" class="menu">Linear Assignment Problems</a></li><li><a href="linear_manifold_regularizer_ex.cpp.html" class="menu">Linear Manifold Regularizer</a></li><li><a href="mpc_ex.cpp.html" class="menu">Linear Model Predictive Control</a></li><li><a href="logger_ex_2.cpp.html" class="menu">Logger Advanced</a></li><li><a href="logger_custom_output_ex.cpp.html" class="menu">Logger Custom Output</a></li><li><a href="logger_ex.cpp.html" class="menu">Logger</a></li><li><a href="matrix_expressions_ex.cpp.html" class="menu">Matrix Expressions</a></li><li><a href="matrix_ex.cpp.html" class="menu">Matrix</a></li><li><a href="member_function_pointer_ex.cpp.html" class="menu">Member Function Pointer</a></li><li><a href="model_selection_ex.cpp.html" class="menu">Model Selection</a></li><li><a href="multiclass_classification_ex.cpp.html" class="menu">Multiclass Classification</a></li><li><a href="multithreaded_object_ex.cpp.html" class="menu">Multithreaded Object</a></li><li><a href="mlp_ex.cpp.html" class="menu">Neural Network</a></li><li><a href="least_squares_ex.cpp.html" class="menu">Non-Linear Least Squares</a></li><li><a href="svm_ex.cpp.html" class="menu">Nu-Support Vector Machine</a></li><li><a href="integrate_function_adapt_simp_ex.cpp.html" class="menu">Numerical Integration</a></li><li><a href="object_detector_advanced_ex.cpp.html" class="menu">Object Detector Advanced</a></li><li><a href="object_detector_ex.cpp.html" class="menu">Object Detector</a></li><li><a href="one_class_classifiers_ex.cpp.html" class="menu">One Class Classifiers</a></li><li><a href="svm_pegasos_ex.cpp.html" class="menu">Online SVM</a></li><li><a href="optimization_ex.cpp.html" class="menu">Optimization</a></li><li><a href="parallel_for_ex.cpp.html" class="menu">Parallel For Loops</a></li><li><a href="pipe_ex_2.cpp.html" class="menu">Pipe 2</a></li><li><a href="pipe_ex.cpp.html" class="menu">Pipe</a></li><li><a href="quantum_computing_ex.cpp.html" class="menu">Quantum Computing</a></li><li><a href="queue_ex.cpp.html" class="menu">Queue</a></li><li><a href="random_cropper_ex.cpp.html" class="menu">Random Cropper</a></li><li><a href="rank_features_ex.cpp.html" class="menu">Rank Features</a></li><li><a href="rvm_ex.cpp.html" class="menu">Relevance Vector Classification</a></li><li><a href="rvm_regression_ex.cpp.html" class="menu">Relevance Vector Regression</a></li><li><a href="running_stats_ex.cpp.html" class="menu">Running Stats</a></li><li><a href="sequence_labeler_ex.cpp.html" class="menu">Sequence Labeling</a></li><li><a href="sequence_segmenter_ex.cpp.html" class="menu">Sequence Segmentation</a></li><li><a href="sockets_ex.cpp.html" class="menu">Sockets</a></li><li><a href="sockstreambuf_ex.cpp.html" class="menu">Sockstreambuf</a></li><li><a href="svm_sparse_ex.cpp.html" class="menu">Sparse Vectors</a></li><li><a href="sqlite_ex.cpp.html" class="menu">SQLite</a></li><li><a href="std_allocator_ex.cpp.html" class="menu">Std C++ Allocator</a></li><li><a href="svm_struct_ex.cpp.html" class="menu">Structural Support Vector Machines</a></li><li><a href="svr_ex.cpp.html" class="menu">Support Vector Regression</a></li><li><a href="surf_ex.cpp.html" class="menu">SURF</a></li><li><a href="svm_rank_ex.cpp.html" class="menu">SVM-Rank</a></li><li><a href="thread_function_ex.cpp.html" class="menu">Thread Function</a></li><li><a href="thread_pool_ex.cpp.html" class="menu">Thread Pool</a></li><li><a href="threaded_object_ex.cpp.html" class="menu">Threaded Object</a></li><li><a href="threads_ex.cpp.html" class="menu">Threads</a></li><li><a href="timer_ex.cpp.html" class="menu">Timer</a></li><li><a href="train_object_detector.cpp.html" class="menu">Train Object Detector</a></li><li><a href="train_shape_predictor_ex.cpp.html" class="menu">Train Shape Predictor</a></li><li><a href="using_custom_kernels_ex.cpp.html" class="menu">Using Custom Kernels</a></li><li><a href="video_tracking_ex.cpp.html" class="menu">Video Object Tracking</a></li><li><a href="webcam_face_pose_ex.cpp.html" class="menu">Webcam Face Pose Estimation</a></li><li><a href="xml_parser_ex.cpp.html" class="menu">XML Parser</a></li></ul></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">Examples: Python</a><ul style="display:none;"><li><a href="svm_binary_classifier.py.html" class="menu">Binary Classification</a></li><li><a href="cnn_face_detector.py.html" class="menu">CNN Face Detector</a></li><li><a href="face_alignment.py.html" class="menu">Face Alignment</a></li><li><a href="face_clustering.py.html" class="menu">Face Clustering</a></li><li><a href="face_detector.py.html" class="menu">Face Detector</a></li><li><a href="face_jitter.py.html" class="menu">Face Jittering/Augmentation</a></li><li><a href="face_landmark_detection.py.html" class="menu">Face Landmark Detection</a></li><li><a href="face_recognition.py.html" class="menu">Face Recognition</a></li><li><a href="find_candidate_object_locations.py.html" class="menu">Find Candidate Object Locations</a></li><li><a href="global_optimization.py.html" class="menu">Global Optimization</a></li><li><a href="max_cost_assignment.py.html" class="menu">Linear Assignment Problems</a></li><li><a href="sequence_segmenter.py.html" class="menu">Sequence Segmenter</a></li><li><a href="svm_struct.py.html" class="menu">Structural Support Vector Machines</a></li><li><a href="svm_rank.py.html" class="menu">SVM-Rank</a></li><li><a href="train_object_detector.py.html" class="menu">Train Object Detector</a></li><li><a href="train_shape_predictor.py.html" class="menu">Train Shape Predictor</a></li><li><a href="correlation_tracker.py.html" class="menu">Video Object Tracking</a></li></ul></li><li><a href="faq.html" class="menu">FAQ</a></li><li><a href="index.html" class="menu">Home</a></li><li><a href="compile.html" class="menu">How to compile</a></li><li><a href="howto_contribute.html" class="menu">How to contribute</a></li><li><a href="term_index.html" class="menu">Index</a></li><li><a href="intro.html" class="menu">Introduction</a></li><li><a href="license.html" class="menu">License</a></li><li><a href="python/index.html" class="menu">Python API</a></li><li><a href="books.html" class="menu">Suggested Books</a></li><li><a href="http://sourceforge.net/p/dclib/wiki/Known_users/" class="menu">Who uses dlib?</a></li></ul><br><b>Current Release</b><ul class="tree"><li><a href="change_log.html" class="menu">Change Log</a></li><li><a href="release_notes.html" class="menu">Release Notes</a></li><li>Version: 19.22</li></ul><br></div><div class="menu_footer">
Last Modified:<br>Aug 24, 2017</div></div><div id="main_text"><div id="main_text_title">API Wrappers</div><div id="main_text_body"><p>
These wrappers provide a portable object oriented interface for networking, multithreading,
GUI development, and file browsing.
Programs written using them can be compiled under POSIX or MS Windows platforms without changing the code.
</p></div></div><div id="right_menu" class="menu"><div class="menu_top"><b>API</b><ul class="tree"><li><a href="#dir_nav" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">dir_nav</a><ul style="display:none;"><li><a href="dlib/dir_nav/dir_nav_kernel_abstract.h.html#directory" class="menu">directory</a></li><li><a href="dlib/dir_nav/dir_nav_kernel_abstract.h.html#file" class="menu">file</a></li><li><a href="dlib/dir_nav/dir_nav_extensions_abstract.h.html#file_exists" class="menu">file_exists</a></li><li><a href="dlib/dir_nav/dir_nav_kernel_abstract.h.html#get_filesystem_roots" class="menu">get_filesystem_roots</a></li><li><a href="dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_files_in_directory_tree" class="menu">get_files_in_directory_tree</a></li><li><a href="dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_parent_directory" class="menu">get_parent_directory</a></li><li><a href="dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_newest_file" class="menu">select_newest_file</a></li><li><a href="dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_oldest_file" class="menu">select_oldest_file</a></li></ul></li><li><a href="#gui_core" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">gui_core</a><ul style="display:none;"><li><a href="dlib/gui_core/gui_core_kernel_abstract.h.html#base_window" class="menu">base_window</a></li><li><a href="dlib/gui_core/gui_core_kernel_abstract.h.html#canvas" class="menu">canvas</a></li><li><a href="dlib/gui_core/gui_core_kernel_abstract.h.html#get_from_clipboard" class="menu">get_from_clipboard</a></li><li><a href="dlib/gui_core/gui_core_kernel_abstract.h.html#put_on_clipboard" class="menu">put_on_clipboard</a></li></ul></li><li><a href="#gui_widgets" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">gui_widgets</a><ul style="display:none;"><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">canvas drawing functions</a><ul style="display:none;"><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_down" class="menu">draw_button_down</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_up" class="menu">draw_button_up</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_checkered" class="menu">draw_checkered</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_circle" class="menu">draw_circle</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_image" class="menu">draw_image</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_line" class="menu">draw_line</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_pixel" class="menu">draw_pixel</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rectangle" class="menu">draw_rectangle</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rounded_rectangle" class="menu">draw_rounded_rectangle</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_circle" class="menu">draw_solid_circle</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_convex_polygon" class="menu">draw_solid_convex_polygon</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_sunken_rectangle" class="menu">draw_sunken_rectangle</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_gradient_rounded" class="menu">fill_gradient_rounded</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect" class="menu">fill_rect</a></li><li><a href="dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect_with_vertical_gradient" class="menu">fill_rect_with_vertical_gradient</a></li></ul></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#drawable" style="float:right"><img src="right.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">drawable</a><ul style="display:none;"><li><a href="dlib/gui_widgets/drawable_abstract.h.html#disable" class="menu">disable</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#disable_events" class="menu">disable_events</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#enable" class="menu">enable</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#enable_events" class="menu">enable_events</a></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">events</a><ul style="display:none;"><li><a href="dlib/gui_widgets/drawable_abstract.h.html#draw" class="menu">draw</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_focus_gained" class="menu">on_focus_gained</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_focus_lost" class="menu">on_focus_lost</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_keydown" class="menu">on_keydown</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_down" class="menu">on_mouse_down</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_enter" class="menu">on_mouse_enter</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_leave" class="menu">on_mouse_leave</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_move" class="menu">on_mouse_move</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_mouse_up" class="menu">on_mouse_up</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_string_put" class="menu">on_string_put</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_user_event" class="menu">on_user_event</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_wheel_down" class="menu">on_wheel_down</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_wheel_up" class="menu">on_wheel_up</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_window_moved" class="menu">on_window_moved</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#on_window_resized" class="menu">on_window_resized</a></li></ul></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#events_are_enabled" class="menu">events_are_enabled</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#hide" class="menu">hide</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#is_enabled" class="menu">is_enabled</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#is_hidden" class="menu">is_hidden</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#main_font" class="menu">main_font</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#next_free_user_event_number" class="menu">next_free_user_event_number</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#parent_window" class="menu">parent_window</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#set_main_font" class="menu">set_main_font</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#set_pos" class="menu">set_pos</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#set_z_order" class="menu">set_z_order</a></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">shape</a><ul style="display:none;"><li><a href="dlib/gui_widgets/drawable_abstract.h.html#bottom" class="menu">bottom</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#get_rect" class="menu">get_rect</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#height" class="menu">height</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#left" class="menu">left</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#right" class="menu">right</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#top" class="menu">top</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#width" class="menu">width</a></li></ul></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#show" class="menu">show</a></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#z_order" class="menu">z_order</a></li></ul></li><li><a href="dlib/gui_widgets/drawable_abstract.h.html#drawable_window" class="menu">drawable_window</a></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">fonts</a><ul style="display:none;"><li><a href="dlib/gui_widgets/fonts_abstract.h.html#bdf_font" class="menu">bdf_font</a></li><li><a href="dlib/gui_widgets/fonts_abstract.h.html#default_font" class="menu">default_font</a></li><li><a href="dlib/gui_widgets/fonts_abstract.h.html#font" class="menu">font</a></li><li><a href="dlib/gui_widgets/fonts_abstract.h.html#get_native_font" class="menu">get_native_font</a></li><li><a href="dlib/gui_widgets/fonts_abstract.h.html#letter" class="menu">letter</a></li></ul></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">styles</a><ul style="display:none;"><li><a href="dlib/gui_widgets/style_abstract.h.html#button_style" class="menu">button_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#button_style_arrow" class="menu">button_style_arrow</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#button_style_default" class="menu">button_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#button_style_toolbar1" class="menu">button_style_toolbar1</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#button_style_toolbar_icon1" class="menu">button_style_toolbar_icon1</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#list_box_style" class="menu">list_box_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#list_box_style_default" class="menu">list_box_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#scrollable_region_style" class="menu">scrollable_region_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#scrollable_region_style_default" class="menu">scrollable_region_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#scroll_bar_style" class="menu">scroll_bar_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#scroll_bar_style_default" class="menu">scroll_bar_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#text_box_style" class="menu">text_box_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#text_box_style_default" class="menu">text_box_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#text_field_style" class="menu">text_field_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#text_field_style_default" class="menu">text_field_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#toggle_button_style" class="menu">toggle_button_style</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#toggle_button_style_check_box" class="menu">toggle_button_style_check_box</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#toggle_button_style_default" class="menu">toggle_button_style_default</a></li><li><a href="dlib/gui_widgets/style_abstract.h.html#toggle_button_style_radio_button" class="menu">toggle_button_style_radio_button</a></li></ul></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">widgets</a><ul style="display:none;"><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#button" class="menu">button</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#button_action" class="menu">button_action</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#check_box" class="menu">check_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#directed_graph_drawer" class="menu">directed_graph_drawer</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#draggable" class="menu">draggable</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#image_display" class="menu">image_display</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#image_widget" class="menu">image_widget</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#image_window" class="menu">image_window</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#label" class="menu">label</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#list_box" class="menu">list_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#menu_bar" class="menu">menu_bar</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#menu_item" class="menu">menu_item</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_separator" class="menu">menu_item_separator</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_submenu" class="menu">menu_item_submenu</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_text" class="menu">menu_item_text</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#message_box" class="menu">message_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#message_box_blocking" class="menu">message_box_blocking</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#mouse_over_event" class="menu">mouse_over_event</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#mouse_tracker" class="menu">mouse_tracker</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#named_rectangle" class="menu">named_rectangle</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#open_existing_file_box" class="menu">open_existing_file_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#open_file_box" class="menu">open_file_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#perspective_display" class="menu">perspective_display</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#perspective_window" class="menu">perspective_window</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu" class="menu">popup_menu</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu_region" class="menu">popup_menu_region</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#radio_button" class="menu">radio_button</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#save_file_box" class="menu">save_file_box</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#scrollable_region" class="menu">scrollable_region</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#scroll_bar" class="menu">scroll_bar</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#tabbed_display" class="menu">tabbed_display</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#text_box" class="menu">text_box</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#text_field" class="menu">text_field</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#text_grid" class="menu">text_grid</a></li><li><a href="dlib/gui_widgets/widgets_abstract.h.html#toggle_button" class="menu">toggle_button</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#tooltip" class="menu">tooltip</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#widget_group" class="menu">widget_group</a></li><li><a href="dlib/gui_widgets/base_widgets_abstract.h.html#zoomable_region" class="menu">zoomable_region</a></li></ul></li></ul></li><li><a href="#misc_api" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">misc_api</a><ul style="display:none;"><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#create_directory" class="menu">create_directory</a></li><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#get_current_dir" class="menu">get_current_dir</a></li><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#locally_change_current_dir" class="menu">locally_change_current_dir</a></li><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#set_current_dir" class="menu">set_current_dir</a></li><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#sleep" class="menu">sleep</a></li><li><a href="dlib/misc_api/misc_api_kernel_abstract.h.html#timestamper" class="menu">timestamper</a></li></ul></li><li><a href="#sockets" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">sockets</a><ul style="display:none;"><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">extensions</a><ul style="display:none;"><li><a href="dlib/sockets/sockets_extensions_abstract.h.html#close_gracefully" class="menu">close_gracefully</a></li><li><a href="dlib/sockets/sockets_extensions_abstract.h.html#connect" class="menu">connect</a></li><li><a href="dlib/sockets/sockets_extensions_abstract.h.html#is_ip_address" class="menu">is_ip_address</a></li><li><a href="dlib/sockets/sockets_extensions_abstract.h.html#network_address" class="menu">network_address</a></li></ul></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">functions</a><ul style="display:none;"><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#create_connection" class="menu">create_connection</a></li><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#create_listener" class="menu">create_listener</a></li><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#get_local_hostname" class="menu">get_local_hostname</a></li><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#hostname_to_ip" class="menu">hostname_to_ip</a></li><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#ip_to_hostname" class="menu">ip_to_hostname</a></li></ul></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">objects</a><ul style="display:none;"><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#connection" class="menu">connection</a></li><li><a href="dlib/sockets/sockets_kernel_abstract.h.html#listener" class="menu">listener</a></li></ul></li></ul></li><li><a href="#threads" style="float:right"><img src="down.gif" border="0"></a><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif" border="0">threads</a><ul style="display:none;"><li><a href="dlib/threads/threads_kernel_abstract.h.html#create_new_thread" class="menu">create_new_thread</a></li><li><a onclick="Toggle(this)" class="sub menu"><img src="plus.gif">extensions</a><ul style="display:none;"><li><a href="#async" class="menu">async</a></li><li><a href="#auto_mutex" class="menu">auto_mutex</a></li><li><a href="#auto_mutex_readonly" class="menu">auto_mutex_readonly</a></li><li><a href="#auto_unlock" class="menu">auto_unlock</a></li><li><a href="#auto_unlock_readonly" class="menu">auto_unlock_readonly</a></li><li><a href="#create_new_thread_extension" class="menu">create_new_thread_extension</a></li><li><a href="#default_thread_pool" class="menu">default_thread_pool</a></li><li><a href="dlib/threads/thread_pool_extension_abstract.h.html#future" class="menu">future</a></li><li><a href="#multithreaded_object" class="menu">multithreaded_object</a></li><li><a href="#parallel_for" class="menu">parallel_for</a></li><li><a href="#read_write_mutex" class="menu">read_write_mutex</a></li><li><a href="#rmutex" class="menu">rmutex</a></li><li><a href="#rsignaler" class="menu">rsignaler</a></li><li><a href="#threaded_object" class="menu">threaded_object</a></li><li><a href="#thread_function" class="menu">thread_function</a></li><li><a href="#thread_pool" class="menu">thread_pool</a></li><li><a href="#thread_specific_data" class="menu">thread_specific_data</a></li></ul></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#get_thread_id" class="menu">get_thread_id</a></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#is_dlib_thread" class="menu">is_dlib_thread</a></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#mutex" class="menu">mutex</a></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#register_thread_end_handler" class="menu">register_thread_end_handler</a></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#signaler" class="menu">signaler</a></li><li><a href="dlib/threads/threads_kernel_abstract.h.html#unregister_thread_end_handler" class="menu">unregister_thread_end_handler</a></li></ul></li></ul><br></div><div class="menu_footer"></div></div></div><div id="bottom_content"><a name="dir_nav"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">dir_nav</h1><BR><BR>
This is a set of objects that provide an easy and portable way to traverse a directory tree.
<BR><BR>C++ Example Programs: <a href="dir_nav_ex.cpp.html">dir_nav_ex.cpp</a><div class="include_file_more_details_wrapper"><a class="more_details" href="dlib/dir_nav/dir_nav_kernel_abstract.h.html">More Details...</a><div class="include_file">#include &lt;dlib/dir_nav.h&gt;</div></div><BR><BR><B>Implementations:</B><blockquote><a href="dlib/dir_nav/dir_nav_kernel_1.h.html">dir_nav_kernel_1</a>:
MS Windows implementation
<br><a href="dlib/dir_nav/dir_nav_kernel_2.h.html">dir_nav_kernel_2</a>:
POSIX implementation
<br></blockquote><br><center><h1>Extensions to dir_nav</h1></center><div class="extension"><a name="dir_nav_extensions"><B><font size="5">dir_nav_extensions</font></B></a><Br><BR>
This is just some miscellaneous extensions to the dir_nav component.
<BR><BR><a class="more_details_extension" href="dlib/dir_nav/dir_nav_extensions_abstract.h.html">More Details...</a></div></div><a name="gui_core"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">gui_core</h1><BR><BR>
This is a set of objects and functions which provide a very basic
framework for manipulating windows. It is intended to provide a portable
interface which can be used to build a more complex windowing toolkit.
<BR><div class="include_file_more_details_wrapper"><a class="more_details" href="dlib/gui_core/gui_core_kernel_abstract.h.html">More Details...</a><div class="include_file">#include &lt;dlib/gui_core.h&gt;</div></div><BR><BR><B>Implementations:</B><blockquote><a href="dlib/gui_core/gui_core_kernel_1.h.html">gui_core_kernel_1</a>:
MS Windows implementation
<br><a href="dlib/gui_core/gui_core_kernel_2.h.html">gui_core_kernel_2</a>:
X Windows implementation
<br></blockquote></div><a name="gui_widgets"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">gui_widgets</h1><BR><BR><p>
This component is a collection of various windowing widgets such as buttons,
labels, text boxes, and so on. It also includes the drawable
interface, drawable_window, and font handling objects.
<a href="dlib/gui_widgets/widgets_abstract.h.html">dlib/gui_widgets/widgets_abstract.h</a>
defines all of the high level graphical widgets provided by this
component that can appear in a drawable_window. To view the specifications for the other members of this
component look at <a href="dlib/gui_widgets/fonts_abstract.h.html">dlib/gui_widgets/fonts_abstract.h</a>,
<a href="dlib/gui_widgets/drawable_abstract.h.html">dlib/gui_widgets/drawable_abstract.h</a>,
and <a href="dlib/gui_widgets/base_widgets_abstract.h.html">dlib/gui_widgets/base_widgets_abstract.h</a>.
</p><p>This component isn't actually a wrapper on top of OS APIs. Rather, it is
implemented on top of the <a href="#gui_core">gui_core</a>
component. I put it on this page just because I expect that people would
look here when searching for the sort of functionality provided by this component.
</p><center><a name="Primary%20widgets"></a><h2>Primary widgets</h2></center><table><tr><td align="center"><a href="dlib/gui_widgets/base_widgets_abstract.h.html#button"><img src="guipics/button.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#check_box"><img src="guipics/check_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#radio_button"><img src="guipics/radio_button.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#label"><img src="guipics/label.png" border="0" height="" width="" alt=""></a></td></tr><tr><td align="center"><a href="dlib/gui_widgets/base_widgets_abstract.h.html#scroll_bar"><img src="guipics/scroll_bar.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#text_field"><img src="guipics/text_field.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#text_box"><img src="guipics/text_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#text_grid"><img src="guipics/text_grid.png" border="0" height="" width="" alt=""></a></td></tr><tr><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#list_box"><img src="guipics/list_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#menu_bar"><img src="guipics/menu_bar.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu"><img src="guipics/popup_menu.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#tabbed_display"><img src="guipics/tabbed_display.png" border="0" height="" width="" alt=""></a></td></tr><tr><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#named_rectangle"><img src="guipics/named_rectangle.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#image_window"><img src="guipics/image_window.jpg" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#directed_graph_drawer"><img src="guipics/directed_graph_drawer.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#mouse_tracker"><img src="guipics/mouse_tracker.png" border="0" height="" width="" alt=""></a></td></tr><tr><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#message_box"><img src="guipics/message_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#open_existing_file_box"><img src="guipics/open_existing_file_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#open_file_box"><img src="guipics/open_file_box.png" border="0" height="" width="" alt=""></a></td><td align="center"><a href="dlib/gui_widgets/widgets_abstract.h.html#save_file_box"><img src="guipics/save_file_box.png" border="0" height="" width="" alt=""></a></td></tr><tr><td align="center" colspan="3"><a href="dlib/gui_widgets/widgets_abstract.h.html#perspective_window"><img src="guipics/perspective_window.png" border="0" height="" width="" alt=""></a></td></tr></table><BR><BR>C++ Example Programs: <a href="gui_api_ex.cpp.html">gui_api_ex.cpp</a>,
<a href="image_ex.cpp.html">image_ex.cpp</a>,
<a href="3d_point_cloud_ex.cpp.html">3d_point_cloud_ex.cpp</a>,
<a href="surf_ex.cpp.html">surf_ex.cpp</a>,
<a href="bayes_net_gui_ex.cpp.html">bayes_net_gui_ex.cpp</a><div class="include_file_more_details_wrapper"><div class="include_file">#include &lt;dlib/gui_widgets.h&gt;</div></div></div><a name="misc_api"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">misc_api</h1><BR><BR>
This is just a collection of miscellaneous APIs that were small/simple
enough not to warrant their own module.
<BR><div class="include_file_more_details_wrapper"><a class="more_details" href="dlib/misc_api/misc_api_kernel_abstract.h.html">More Details...</a><div class="include_file">#include &lt;dlib/misc_api.h&gt;</div></div><BR><BR><B>Implementations:</B><blockquote><a href="dlib/misc_api/misc_api_kernel_1.h.html">misc_api_kernel_1</a>:
MS Windows implementation
<br><a href="dlib/misc_api/misc_api_kernel_2.h.html">misc_api_kernel_2</a>:
POSIX implementation
<br></blockquote></div><a name="sockets"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">sockets</h1><BR><BR>
This is a set of objects that provides an easy to use and object oriented
interface for dealing with TCP networking. There are currently two implementations,
one for UNIX and another for all versions of Windows after Windows95.
Both provide the exact same interface so programs written with them can be
recompiled on either platform without a problem.
<p>
You also may want to take note of the <a href="other.html#timeout">timeout</a> object.
It provides a mechanism which you can use to add a timeout to a network operation.
</p><BR><BR>C++ Example Programs: <a href="iosockstream_ex.cpp.html">iosockstream_ex.cpp</a>,
<a href="sockets_ex.cpp.html">sockets_ex.cpp</a>,
<a href="sockstreambuf_ex.cpp.html">sockstreambuf_ex.cpp</a>,
<a href="server_http_ex.cpp.html">server_http_ex.cpp</a>,
<a href="server_iostream_ex.cpp.html">server_iostream_ex.cpp</a><div class="include_file_more_details_wrapper"><a class="more_details" href="dlib/sockets/sockets_kernel_abstract.h.html">More Details...</a><div class="include_file">#include &lt;dlib/sockets.h&gt;</div></div><BR><BR><B>Implementations:</B><blockquote><a href="dlib/sockets/sockets_kernel_1.h.html">sockets_kernel_1</a>:
MS Windows implementation
<br><a href="dlib/sockets/sockets_kernel_2.h.html">sockets_kernel_2</a>:
POSIX implementation
<br></blockquote><br><center><h1>Extensions to sockets</h1></center><div class="extension"><a name="sockets_extensions"><B><font size="5">sockets_extensions</font></B></a><Br><BR>
This is just some miscellaneous extensions to the socket api.
<BR><BR><a class="more_details_extension" href="dlib/sockets/sockets_extensions_abstract.h.html">More Details...</a></div></div><a name="threads"></a><div class="component"><a href="#top"><font size="2"><center>[top]</center></font></a><h1 style="margin:0px;">threads</h1><BR><BR>
This is a set of objects that provides an easy to use and object oriented interface
for creating multi-threaded programs. There are currently two implementations, one
for UNIX and another for any variant of MS Windows after Windows 95. Both provide
the exact same interface so programs written with them can be recompiled on either
platform without a problem.
<p>
You also probably want to take note of the <a href="other.html#pipe">pipe</a> object.
It provides an easy to use typesafe mechanism to send messages between threads.
</p><BR><BR>C++ Example Programs: <a href="threads_ex.cpp.html">threads_ex.cpp</a>,
<a href="logger_ex_2.cpp.html">logger_ex_2.cpp</a>,
<a href="pipe_ex.cpp.html">pipe_ex.cpp</a>,
<a href="multithreaded_object_ex.cpp.html">multithreaded_object_ex.cpp</a>,
<a href="threaded_object_ex.cpp.html">threaded_object_ex.cpp</a>,
<a href="thread_function_ex.cpp.html">thread_function_ex.cpp</a>,
<a href="thread_pool_ex.cpp.html">thread_pool_ex.cpp</a><div class="include_file_more_details_wrapper"><a class="more_details" href="dlib/threads/threads_kernel_abstract.h.html">More Details...</a><div class="include_file">#include &lt;dlib/threads.h&gt;</div></div><BR><BR><B>Implementations:</B><blockquote><a href="dlib/threads/threads_kernel_1.h.html">threads_kernel_1</a>:
MS Windows implementation
<br><a href="dlib/threads/threads_kernel_2.h.html">threads_kernel_2</a>:
POSIX implementation
<br></blockquote><br><center><h1>Extensions to threads</h1></center><div class="extension"><a name="async"><B><font size="5">async</font></B></a><Br><BR>
This function behaves just like std::async()
except that instead of spawning a new thread to process each task it submits
the task to a <a href="#thread_pool">dlib::thread_pool</a>. Therefore, dlib::async() is
guaranteed to use a bounded number of threads unlike std::async(). This also
means that calls to dlib::async() will block if there aren't any free threads
in the thread pool.
<BR><BR><a class="more_details_extension" href="dlib/threads/async_abstract.h.html#async">More Details...</a></div><div class="extension"><a name="auto_mutex"><B><font size="5">auto_mutex</font></B></a><Br><BR>
This extension adds a mechanism to automatically lock and unlock a mutex.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><BR>C++ Example Programs: <a href="threads_ex.cpp.html">threads_ex.cpp</a><a class="more_details_extension" href="dlib/threads/auto_mutex_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="auto_mutex_readonly"><B><font size="5">auto_mutex_readonly</font></B></a><Br><BR>
This extension adds a mechanism to automatically perform a readonly lock and unlock
of a <a href="#read_write_mutex">read_write_mutex</a>.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/auto_mutex_extension_abstract.h.html#auto_mutex_readonly">More Details...</a></div><div class="extension"><a name="auto_unlock"><B><font size="5">auto_unlock</font></B></a><Br><BR>
This extension adds a mechanism to automatically unlock a mutex.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/auto_unlock_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="auto_unlock_readonly"><B><font size="5">auto_unlock_readonly</font></B></a><Br><BR>
This extension adds a mechanism to automatically remove a readonly unlock from a <a href="#read_write_mutex">read_write_mutex</a>.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/auto_unlock_extension_abstract.h.html#auto_unlock_readonly">More Details...</a></div><div class="extension"><a name="create_new_thread_extension"><B><font size="5">create_new_thread_extension</font></B></a><Br><BR>
This extension adds some templated overloads to the
<a href="dlib/threads/threads_kernel_abstract.h.html#create_new_thread">create_new_thread()</a> function. They allow you to create new threads using member functions from a class.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/create_new_thread_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="default_thread_pool"><B><font size="5">default_thread_pool</font></B></a><Br><BR>
This function returns a reference to a global <a href="#thread_pool">thread_pool</a>. If the DLIB_NUM_THREADS
environment variable is set to an integer then the thread pool will contain
DLIB_NUM_THREADS threads, otherwise it will contain
std::thread::hardware_concurrency() threads.
<BR><BR><a class="more_details_extension" href="dlib/threads/async_abstract.h.html#default_thread_pool">More Details...</a></div><div class="extension"><a name="multithreaded_object"><B><font size="5">multithreaded_object</font></B></a><Br><BR>
This object represents a multithreaded object. It is similar to
the <a href="#threaded_object">threaded_object</a> except it allows you to have many threads in a
single object rather than just one.
<BR><BR><BR>C++ Example Programs: <a href="multithreaded_object_ex.cpp.html">multithreaded_object_ex.cpp</a>,
<a href="pipe_ex.cpp.html">pipe_ex.cpp</a><a class="more_details_extension" href="dlib/threads/multithreaded_object_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="parallel_for"><B><font size="5">parallel_for</font></B></a><Br><BR>
This is a set of functions for executing the contents of a for loop in parallel.
It is useful for taking advantage of multi-processor systems.
<BR><BR><BR>C++ Example Programs: <a href="parallel_for_ex.cpp.html">parallel_for_ex.cpp</a><a class="more_details_extension" href="dlib/threads/parallel_for_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="read_write_mutex"><B><font size="5">read_write_mutex</font></B></a><Br><BR>
This extension adds a mutex object that can perform both normal "write locks" as well as "readonly locks".
See the specification for details.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/read_write_mutex_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="rmutex"><B><font size="5">rmutex</font></B></a><Br><BR>
This extension adds a mutex object that can handle recursive calls
to lock().
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/rmutex_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="rsignaler"><B><font size="5">rsignaler</font></B></a><Br><BR>
This extension adds a signaler object that can be used with the rmutex object.
Also note that this extension is included by dlib/threads.h so you don't have to include
anything extra to get it.
<BR><BR><a class="more_details_extension" href="dlib/threads/rsignaler_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="threaded_object"><B><font size="5">threaded_object</font></B></a><Br><BR>
This extension represents a simple threaded object. It provides a convenient
mechanism to create an object that contains a thread.
<BR><BR><BR>C++ Example Programs: <a href="threaded_object_ex.cpp.html">threaded_object_ex.cpp</a><a class="more_details_extension" href="dlib/threads/threaded_object_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="thread_function"><B><font size="5">thread_function</font></B></a><Br><BR>
This object represents a thread on a global C++ function. That is, it allows you
to run a global function in its own thread.
<BR><BR><BR>C++ Example Programs: <a href="thread_function_ex.cpp.html">thread_function_ex.cpp</a><a class="more_details_extension" href="dlib/threads/thread_function_extension_abstract.h.html">More Details...</a></div><div class="extension"><a name="thread_pool"><B><font size="5">thread_pool</font></B></a><Br><BR><p>
This object represents a fixed size group of threads which you can
submit tasks to and then wait for those tasks to be completed. It also
provides a <a href="dlib/threads/thread_pool_extension_abstract.h.html#future">future</a> object
that provides a container which allows you to safely pass objects into the tasks.
</p>
The implementation of this extension can be found
<a href="dlib/threads/thread_pool_extension.h.html">here</a>. It is
implemented such that no memory allocations occur after the thread pool
has been constructed so long as the user doesn't call
any of the add_task_by_value() routines. The future object also doesn't
perform any memory allocations or contain any system resources such as mutex objects.
<BR><BR><BR>C++ Example Programs: <a href="thread_pool_ex.cpp.html">thread_pool_ex.cpp</a><a class="more_details_extension" href="dlib/threads/thread_pool_extension_abstract.h.html#thread_pool">More Details...</a></div><div class="extension"><a name="thread_specific_data"><B><font size="5">thread_specific_data</font></B></a><Br><BR>
This extension adds the ability to easily create thread specific data.
<BR><BR><a class="more_details_extension" href="dlib/threads/thread_specific_data_extension_abstract.h.html">More Details...</a></div></div></div></body></html>