|
<!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 <dlib/dir_nav.h></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 <dlib/gui_core.h></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 <dlib/gui_widgets.h></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 <dlib/misc_api.h></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 <dlib/sockets.h></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 <dlib/threads.h></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> |
|
|