From 657e41ec8c79e4bd890cfa15e34be3d66afca60c Mon Sep 17 00:00:00 2001 From: Luke Rieff Date: Sat, 11 Jun 2022 11:36:12 +0200 Subject: [PATCH] a --- .gitignore | 1 + .vscode/c_cpp_properties.json | 17 + docs/html/annotated.html | 109 - docs/html/application_8h.html | 554 ------ docs/html/application_8h__incl.map | 16 - docs/html/application_8h__incl.md5 | 1 - docs/html/application_8h__incl.png | Bin 114139 -> 0 bytes docs/html/application_8h_source.html | 181 -- docs/html/automatic-pool_8h.html | 539 ----- docs/html/automatic-pool_8h__incl.map | 6 - docs/html/automatic-pool_8h__incl.md5 | 1 - docs/html/automatic-pool_8h__incl.png | Bin 11190 -> 0 bytes docs/html/automatic-pool_8h_source.html | 157 -- docs/html/bc_s.png | Bin 676 -> 0 bytes docs/html/bdwn.png | Bin 147 -> 0 bytes docs/html/circular-queue_8h.html | 427 ---- docs/html/circular-queue_8h__dep__incl.map | 12 - docs/html/circular-queue_8h__dep__incl.md5 | 1 - docs/html/circular-queue_8h__dep__incl.png | Bin 40688 -> 0 bytes docs/html/circular-queue_8h_source.html | 131 -- docs/html/classes.html | 118 -- docs/html/closed.png | Bin 132 -> 0 bytes docs/html/closure_8h.html | 254 --- docs/html/closure_8h__dep__incl.map | 17 - docs/html/closure_8h__dep__incl.md5 | 1 - docs/html/closure_8h__dep__incl.png | Bin 121647 -> 0 bytes docs/html/closure_8h_source.html | 106 - docs/html/conditional_8h.html | 217 -- docs/html/conditional_8h__dep__incl.map | 4 - docs/html/conditional_8h__dep__incl.md5 | 1 - docs/html/conditional_8h__dep__incl.png | Bin 4879 -> 0 bytes docs/html/conditional_8h__incl.map | 4 - docs/html/conditional_8h__incl.md5 | 1 - docs/html/conditional_8h__incl.png | Bin 4802 -> 0 bytes docs/html/conditional_8h_source.html | 107 - docs/html/config_8h.html | 133 -- docs/html/config_8h__dep__incl.map | 10 - docs/html/config_8h__dep__incl.md5 | 1 - docs/html/config_8h__dep__incl.png | Bin 30260 -> 0 bytes docs/html/config_8h_source.html | 118 -- docs/html/critical-section_8h.html | 135 -- docs/html/critical-section_8h_source.html | 101 - docs/html/dir_000003_000004.html | 77 - docs/html/dir_000003_000005.html | 77 - docs/html/dir_000004_000005.html | 77 - .../dir_07ca576fdadbb370dc7f55dcdd06f8b8.html | 105 - ...r_07ca576fdadbb370dc7f55dcdd06f8b8_dep.map | 6 - ...r_07ca576fdadbb370dc7f55dcdd06f8b8_dep.md5 | 1 - ...r_07ca576fdadbb370dc7f55dcdd06f8b8_dep.png | Bin 3596 -> 0 bytes .../dir_0b107f87463abbc8b2ae6ed1ed981175.html | 126 -- ...r_0b107f87463abbc8b2ae6ed1ed981175_dep.map | 4 - ...r_0b107f87463abbc8b2ae6ed1ed981175_dep.md5 | 1 - ...r_0b107f87463abbc8b2ae6ed1ed981175_dep.png | Bin 1967 -> 0 bytes .../dir_1c07dc2bb514f68216b7275ce8a19048.html | 88 - .../dir_abb95c841d2d19e4a38c0aebc4f3511e.html | 113 -- ...r_abb95c841d2d19e4a38c0aebc4f3511e_dep.map | 8 - ...r_abb95c841d2d19e4a38c0aebc4f3511e_dep.md5 | 1 - ...r_abb95c841d2d19e4a38c0aebc4f3511e_dep.png | Bin 5310 -> 0 bytes .../dir_bf342d982ec00e45652f5a4c01fdc40d.html | 104 - ...r_bf342d982ec00e45652f5a4c01fdc40d_dep.map | 8 - ...r_bf342d982ec00e45652f5a4c01fdc40d_dep.md5 | 1 - ...r_bf342d982ec00e45652f5a4c01fdc40d_dep.png | Bin 5359 -> 0 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 94 - ...r_d44c64559bbebec7f509842c48db8b23_dep.map | 4 - ...r_d44c64559bbebec7f509842c48db8b23_dep.md5 | 1 - ...r_d44c64559bbebec7f509842c48db8b23_dep.png | Bin 2028 -> 0 bytes docs/html/doc.png | Bin 746 -> 0 bytes docs/html/doxygen.css | 1771 ----------------- docs/html/doxygen.png | Bin 3779 -> 0 bytes docs/html/dynsections.js | 120 -- docs/html/event-loop_8h.html | 352 ---- docs/html/event-loop_8h__dep__incl.map | 4 - docs/html/event-loop_8h__dep__incl.md5 | 1 - docs/html/event-loop_8h__dep__incl.png | Bin 5790 -> 0 bytes docs/html/event-loop_8h__incl.map | 11 - docs/html/event-loop_8h__incl.md5 | 1 - docs/html/event-loop_8h__incl.png | Bin 46132 -> 0 bytes docs/html/event-loop_8h_source.html | 137 -- docs/html/event_8h.html | 575 ------ docs/html/event_8h__dep__incl.map | 9 - docs/html/event_8h__dep__incl.md5 | 1 - docs/html/event_8h__dep__incl.png | Bin 32070 -> 0 bytes docs/html/event_8h__incl.map | 5 - docs/html/event_8h__incl.md5 | 1 - docs/html/event_8h__incl.png | Bin 9630 -> 0 bytes docs/html/event_8h_source.html | 222 --- docs/html/files.html | 107 - docs/html/folderclosed.png | Bin 616 -> 0 bytes docs/html/folderopen.png | Bin 597 -> 0 bytes docs/html/functional_8h.html | 458 ----- docs/html/functional_8h__incl.map | 8 - docs/html/functional_8h__incl.md5 | 1 - docs/html/functional_8h__incl.png | Bin 27379 -> 0 bytes docs/html/functional_8h_source.html | 139 -- docs/html/functions.html | 401 ---- docs/html/functions_vars.html | 401 ---- docs/html/globals.html | 554 ------ docs/html/globals_defs.html | 141 -- docs/html/globals_enum.html | 87 - docs/html/globals_eval.html | 84 - docs/html/globals_func.html | 437 ---- docs/html/globals_type.html | 105 - docs/html/graph_legend.html | 137 -- docs/html/graph_legend.md5 | 1 - docs/html/graph_legend.png | Bin 20608 -> 0 bytes docs/html/index.html | 1302 ------------ docs/html/iterator_8h.html | 635 ------ docs/html/iterator_8h__dep__incl.map | 4 - docs/html/iterator_8h__dep__incl.md5 | 1 - docs/html/iterator_8h__dep__incl.png | Bin 4930 -> 0 bytes docs/html/iterator_8h__incl.map | 5 - docs/html/iterator_8h__incl.md5 | 1 - docs/html/iterator_8h__incl.png | Bin 9650 -> 0 bytes docs/html/iterator_8h_source.html | 151 -- docs/html/jquery.js | 35 - docs/html/linked-list_8h.html | 493 ----- docs/html/linked-list_8h__dep__incl.map | 12 - docs/html/linked-list_8h__dep__incl.md5 | 1 - docs/html/linked-list_8h__dep__incl.png | Bin 53704 -> 0 bytes docs/html/linked-list_8h__incl.map | 4 - docs/html/linked-list_8h__incl.md5 | 1 - docs/html/linked-list_8h__incl.png | Bin 4844 -> 0 bytes docs/html/linked-list_8h_source.html | 142 -- docs/html/menu.js | 50 - docs/html/menudata.js | 81 - docs/html/module_8h.html | 228 --- docs/html/module_8h__dep__incl.map | 4 - docs/html/module_8h__dep__incl.md5 | 1 - docs/html/module_8h__dep__incl.png | Bin 5493 -> 0 bytes docs/html/module_8h_source.html | 118 -- docs/html/nav_f.png | Bin 153 -> 0 bytes docs/html/nav_g.png | Bin 95 -> 0 bytes docs/html/nav_h.png | Bin 98 -> 0 bytes docs/html/object-pool_8h.html | 456 ----- docs/html/object-pool_8h__dep__incl.map | 10 - docs/html/object-pool_8h__dep__incl.md5 | 1 - docs/html/object-pool_8h__dep__incl.png | Bin 26396 -> 0 bytes docs/html/object-pool_8h__incl.map | 4 - docs/html/object-pool_8h__incl.md5 | 1 - docs/html/object-pool_8h__incl.png | Bin 4808 -> 0 bytes docs/html/object-pool_8h_source.html | 132 -- docs/html/open.png | Bin 123 -> 0 bytes docs/html/pipeline_8h.html | 263 --- docs/html/pipeline_8h__dep__incl.map | 4 - docs/html/pipeline_8h__dep__incl.md5 | 1 - docs/html/pipeline_8h__dep__incl.png | Bin 4737 -> 0 bytes docs/html/pipeline_8h__incl.map | 4 - docs/html/pipeline_8h__incl.md5 | 1 - docs/html/pipeline_8h__incl.png | Bin 4621 -> 0 bytes docs/html/pipeline_8h_source.html | 112 -- docs/html/promise_8h.html | 675 ------- docs/html/promise_8h__dep__incl.map | 5 - docs/html/promise_8h__dep__incl.md5 | 1 - docs/html/promise_8h__dep__incl.png | Bin 9364 -> 0 bytes docs/html/promise_8h__incl.map | 7 - docs/html/promise_8h__incl.md5 | 1 - docs/html/promise_8h__incl.png | Bin 12723 -> 0 bytes docs/html/promise_8h_source.html | 202 -- docs/html/scheduler_8h.html | 365 ---- docs/html/scheduler_8h__dep__incl.map | 4 - docs/html/scheduler_8h__dep__incl.md5 | 1 - docs/html/scheduler_8h__dep__incl.png | Bin 5754 -> 0 bytes docs/html/scheduler_8h__incl.map | 11 - docs/html/scheduler_8h__incl.md5 | 1 - docs/html/scheduler_8h__incl.png | Bin 46032 -> 0 bytes docs/html/scheduler_8h_source.html | 146 -- docs/html/search/all_0.html | 30 - docs/html/search/all_0.js | 7 - docs/html/search/all_1.html | 30 - docs/html/search/all_1.js | 5 - docs/html/search/all_10.html | 30 - docs/html/search/all_10.js | 9 - docs/html/search/all_11.html | 30 - docs/html/search/all_11.js | 188 -- docs/html/search/all_12.html | 30 - docs/html/search/all_12.js | 4 - docs/html/search/all_13.html | 30 - docs/html/search/all_13.js | 4 - docs/html/search/all_14.html | 30 - docs/html/search/all_14.js | 4 - docs/html/search/all_2.html | 30 - docs/html/search/all_2.js | 17 - docs/html/search/all_3.html | 30 - docs/html/search/all_3.js | 7 - docs/html/search/all_4.html | 30 - docs/html/search/all_4.js | 12 - docs/html/search/all_5.html | 30 - docs/html/search/all_5.js | 6 - docs/html/search/all_6.html | 30 - docs/html/search/all_6.js | 4 - docs/html/search/all_7.html | 30 - docs/html/search/all_7.js | 9 - docs/html/search/all_8.html | 30 - docs/html/search/all_8.js | 13 - docs/html/search/all_9.html | 30 - docs/html/search/all_9.js | 5 - docs/html/search/all_a.html | 30 - docs/html/search/all_a.js | 4 - docs/html/search/all_b.html | 30 - docs/html/search/all_b.js | 7 - docs/html/search/all_c.html | 30 - docs/html/search/all_c.js | 8 - docs/html/search/all_d.html | 30 - docs/html/search/all_d.js | 5 - docs/html/search/all_e.html | 30 - docs/html/search/all_e.js | 11 - docs/html/search/all_f.html | 30 - docs/html/search/all_f.js | 19 - docs/html/search/classes_0.html | 30 - docs/html/search/classes_0.js | 4 - docs/html/search/classes_1.html | 30 - docs/html/search/classes_1.js | 5 - docs/html/search/classes_2.html | 30 - docs/html/search/classes_2.js | 28 - docs/html/search/close.png | Bin 273 -> 0 bytes docs/html/search/defines_0.html | 30 - docs/html/search/defines_0.js | 25 - docs/html/search/enums_0.html | 30 - docs/html/search/enums_0.js | 7 - docs/html/search/enumvalues_0.html | 30 - docs/html/search/enumvalues_0.js | 6 - docs/html/search/files_0.html | 30 - docs/html/search/files_0.js | 5 - docs/html/search/files_1.html | 30 - docs/html/search/files_1.js | 8 - docs/html/search/files_2.html | 30 - docs/html/search/files_2.js | 5 - docs/html/search/files_3.html | 30 - docs/html/search/files_3.js | 4 - docs/html/search/files_4.html | 30 - docs/html/search/files_4.js | 4 - docs/html/search/files_5.html | 30 - docs/html/search/files_5.js | 4 - docs/html/search/files_6.html | 30 - docs/html/search/files_6.js | 4 - docs/html/search/files_7.html | 30 - docs/html/search/files_7.js | 4 - docs/html/search/files_8.html | 30 - docs/html/search/files_8.js | 5 - docs/html/search/files_9.html | 30 - docs/html/search/files_9.js | 7 - docs/html/search/functions_0.html | 30 - docs/html/search/functions_0.js | 123 -- docs/html/search/mag_sel.png | Bin 465 -> 0 bytes docs/html/search/nomatches.html | 12 - docs/html/search/pages_0.html | 30 - docs/html/search/pages_0.js | 4 - docs/html/search/search.css | 271 --- docs/html/search/search.js | 814 -------- docs/html/search/search_l.png | Bin 567 -> 0 bytes docs/html/search/search_m.png | Bin 158 -> 0 bytes docs/html/search/search_r.png | Bin 553 -> 0 bytes docs/html/search/searchdata.js | 42 - docs/html/search/typedefs_0.html | 30 - docs/html/search/typedefs_0.js | 13 - docs/html/search/variables_0.html | 30 - docs/html/search/variables_0.js | 5 - docs/html/search/variables_1.html | 30 - docs/html/search/variables_1.js | 5 - docs/html/search/variables_10.html | 30 - docs/html/search/variables_10.js | 9 - docs/html/search/variables_11.html | 30 - docs/html/search/variables_11.js | 4 - docs/html/search/variables_12.html | 30 - docs/html/search/variables_12.js | 4 - docs/html/search/variables_13.html | 30 - docs/html/search/variables_13.js | 4 - docs/html/search/variables_2.html | 30 - docs/html/search/variables_2.js | 12 - docs/html/search/variables_3.html | 30 - docs/html/search/variables_3.js | 7 - docs/html/search/variables_4.html | 30 - docs/html/search/variables_4.js | 9 - docs/html/search/variables_5.html | 30 - docs/html/search/variables_5.js | 5 - docs/html/search/variables_6.html | 30 - docs/html/search/variables_6.js | 4 - docs/html/search/variables_7.html | 30 - docs/html/search/variables_7.js | 8 - docs/html/search/variables_8.html | 30 - docs/html/search/variables_8.js | 12 - docs/html/search/variables_9.html | 30 - docs/html/search/variables_9.js | 4 - docs/html/search/variables_a.html | 30 - docs/html/search/variables_a.js | 4 - docs/html/search/variables_b.html | 30 - docs/html/search/variables_b.js | 6 - docs/html/search/variables_c.html | 30 - docs/html/search/variables_c.js | 6 - docs/html/search/variables_d.html | 30 - docs/html/search/variables_d.js | 5 - docs/html/search/variables_e.html | 30 - docs/html/search/variables_e.js | 11 - docs/html/search/variables_f.html | 30 - docs/html/search/variables_f.js | 13 - docs/html/signal_8h.html | 492 ----- docs/html/signal_8h__dep__incl.map | 4 - docs/html/signal_8h__dep__incl.md5 | 1 - docs/html/signal_8h__dep__incl.png | Bin 5926 -> 0 bytes docs/html/signal_8h__incl.map | 12 - docs/html/signal_8h__incl.md5 | 1 - docs/html/signal_8h__incl.png | Bin 64671 -> 0 bytes docs/html/signal_8h_source.html | 161 -- docs/html/splitbar.png | Bin 314 -> 0 bytes docs/html/structevent.html | 149 -- ...event__detail_1_1uel__event__listener.html | 124 -- ...l_1_1uel__event__listener__coll__graph.map | 4 - ...l_1_1uel__event__listener__coll__graph.md5 | 1 - ...l_1_1uel__event__listener__coll__graph.png | Bin 3726 -> 0 bytes ...event__detail_1_1uel__event__observer.html | 133 -- ...l_1_1uel__event__observer__coll__graph.map | 5 - ...l_1_1uel__event__observer__coll__graph.md5 | 1 - ...l_1_1uel__event__observer__coll__graph.png | Bin 6818 -> 0 bytes ...__event__detail_1_1uel__event__signal.html | 115 -- ...ail_1_1uel__event__signal__coll__graph.map | 5 - ...ail_1_1uel__event__signal__coll__graph.md5 | 1 - ...ail_1_1uel__event__signal__coll__graph.png | Bin 5477 -> 0 bytes ...l__event__detail_1_1uel__event__timer.html | 120 -- ...tail_1_1uel__event__timer__coll__graph.map | 6 - ...tail_1_1uel__event__timer__coll__graph.md5 | 1 - ...tail_1_1uel__event__timer__coll__graph.png | Bin 8911 -> 0 bytes docs/html/structevent__coll__graph.map | 17 - docs/html/structevent__coll__graph.md5 | 1 - docs/html/structevent__coll__graph.png | Bin 53321 -> 0 bytes docs/html/structsyspools.html | 128 -- docs/html/structsyspools__coll__graph.map | 7 - docs/html/structsyspools__coll__graph.md5 | 1 - docs/html/structsyspools__coll__graph.png | Bin 15746 -> 0 bytes docs/html/structsysqueues.html | 152 -- docs/html/structsysqueues__coll__graph.map | 5 - docs/html/structsysqueues__coll__graph.md5 | 1 - docs/html/structsysqueues__coll__graph.png | Bin 6409 -> 0 bytes docs/html/structuel__application.html | 145 -- .../structuel__application__coll__graph.map | 12 - .../structuel__application__coll__graph.md5 | 1 - .../structuel__application__coll__graph.png | Bin 34207 -> 0 bytes docs/html/structuel__autopool.html | 113 -- .../html/structuel__autopool__coll__graph.map | 5 - .../html/structuel__autopool__coll__graph.md5 | 1 - .../html/structuel__autopool__coll__graph.png | Bin 7013 -> 0 bytes docs/html/structuel__autoptr.html | 115 -- docs/html/structuel__autoptr__coll__graph.map | 7 - docs/html/structuel__autoptr__coll__graph.md5 | 1 - docs/html/structuel__autoptr__coll__graph.png | Bin 11839 -> 0 bytes docs/html/structuel__closure.html | 111 -- docs/html/structuel__closure__coll__graph.map | 5 - docs/html/structuel__closure__coll__graph.md5 | 1 - docs/html/structuel__closure__coll__graph.png | Bin 7024 -> 0 bytes docs/html/structuel__conditional.html | 113 -- .../structuel__conditional__coll__graph.map | 4 - .../structuel__conditional__coll__graph.md5 | 1 - .../structuel__conditional__coll__graph.png | Bin 3901 -> 0 bytes docs/html/structuel__cqueue.html | 150 -- docs/html/structuel__cqueue__coll__graph.map | 5 - docs/html/structuel__cqueue__coll__graph.md5 | 1 - docs/html/structuel__cqueue__coll__graph.png | Bin 7058 -> 0 bytes docs/html/structuel__evloop.html | 118 -- docs/html/structuel__evloop__coll__graph.map | 6 - docs/html/structuel__evloop__coll__graph.md5 | 1 - docs/html/structuel__evloop__coll__graph.png | Bin 7847 -> 0 bytes docs/html/structuel__func__mapper.html | 114 -- .../structuel__func__mapper__coll__graph.map | 6 - .../structuel__func__mapper__coll__graph.md5 | 1 - .../structuel__func__mapper__coll__graph.png | Bin 7803 -> 0 bytes docs/html/structuel__iterator.html | 129 -- docs/html/structuel__iterator__array.html | 113 -- ...tructuel__iterator__array__coll__graph.map | 5 - ...tructuel__iterator__array__coll__graph.md5 | 1 - ...tructuel__iterator__array__coll__graph.png | Bin 6848 -> 0 bytes .../html/structuel__iterator__coll__graph.map | 5 - .../html/structuel__iterator__coll__graph.md5 | 1 - .../html/structuel__iterator__coll__graph.png | Bin 6087 -> 0 bytes docs/html/structuel__llist.html | 113 -- docs/html/structuel__llist__coll__graph.map | 5 - docs/html/structuel__llist__coll__graph.md5 | 1 - docs/html/structuel__llist__coll__graph.png | Bin 5620 -> 0 bytes docs/html/structuel__llist__node.html | 109 - .../structuel__llist__node__coll__graph.map | 5 - .../structuel__llist__node__coll__graph.md5 | 1 - .../structuel__llist__node__coll__graph.png | Bin 6013 -> 0 bytes docs/html/structuel__module.html | 155 -- docs/html/structuel__module__coll__graph.map | 13 - docs/html/structuel__module__coll__graph.md5 | 1 - docs/html/structuel__module__coll__graph.png | Bin 37591 -> 0 bytes docs/html/structuel__objpool.html | 111 -- docs/html/structuel__objpool__coll__graph.map | 5 - docs/html/structuel__objpool__coll__graph.md5 | 1 - docs/html/structuel__objpool__coll__graph.png | Bin 5491 -> 0 bytes docs/html/structuel__pipeline.html | 110 - .../html/structuel__pipeline__coll__graph.map | 5 - .../html/structuel__pipeline__coll__graph.md5 | 1 - .../html/structuel__pipeline__coll__graph.png | Bin 5304 -> 0 bytes docs/html/structuel__promise.html | 133 -- docs/html/structuel__promise__coll__graph.map | 8 - docs/html/structuel__promise__coll__graph.md5 | 1 - docs/html/structuel__promise__coll__graph.png | Bin 14944 -> 0 bytes docs/html/structuel__promise__segment.html | 116 -- ...ructuel__promise__segment__coll__graph.map | 5 - ...ructuel__promise__segment__coll__graph.md5 | 1 - ...ructuel__promise__segment__coll__graph.png | Bin 8172 -> 0 bytes docs/html/structuel__promise__store.html | 108 - ...structuel__promise__store__coll__graph.map | 4 - ...structuel__promise__store__coll__graph.md5 | 1 - ...structuel__promise__store__coll__graph.png | Bin 4076 -> 0 bytes docs/html/structuel__scheduler.html | 158 -- .../structuel__scheduler__coll__graph.map | 7 - .../structuel__scheduler__coll__graph.md5 | 1 - .../structuel__scheduler__coll__graph.png | Bin 10982 -> 0 bytes docs/html/structuel__signal__relay.html | 148 -- .../structuel__signal__relay__coll__graph.map | 7 - .../structuel__signal__relay__coll__graph.md5 | 1 - .../structuel__signal__relay__coll__graph.png | Bin 10911 -> 0 bytes docs/html/sync_off.png | Bin 853 -> 0 bytes docs/html/sync_on.png | Bin 845 -> 0 bytes docs/html/system-pools_8h.html | 315 --- docs/html/system-pools_8h__dep__incl.map | 7 - docs/html/system-pools_8h__dep__incl.md5 | 1 - docs/html/system-pools_8h__dep__incl.png | Bin 23878 -> 0 bytes docs/html/system-pools_8h__incl.map | 9 - docs/html/system-pools_8h__incl.md5 | 1 - docs/html/system-pools_8h__incl.png | Bin 24832 -> 0 bytes docs/html/system-pools_8h_source.html | 136 -- docs/html/system-queues_8h.html | 373 ---- docs/html/system-queues_8h__dep__incl.map | 7 - docs/html/system-queues_8h__dep__incl.md5 | 1 - docs/html/system-queues_8h__dep__incl.png | Bin 23948 -> 0 bytes docs/html/system-queues_8h__incl.map | 8 - docs/html/system-queues_8h__incl.md5 | 1 - docs/html/system-queues_8h__incl.png | Bin 18524 -> 0 bytes docs/html/system-queues_8h_source.html | 137 -- docs/html/tab_a.png | Bin 142 -> 0 bytes docs/html/tab_b.png | Bin 169 -> 0 bytes docs/html/tab_h.png | Bin 177 -> 0 bytes docs/html/tab_s.png | Bin 184 -> 0 bytes docs/html/tabs.css | 1 - .../unionevent_1_1uel__event__detail.html | 144 -- ...ent_1_1uel__event__detail__coll__graph.map | 13 - ...ent_1_1uel__event__detail__coll__graph.md5 | 1 - ...ent_1_1uel__event__detail__coll__graph.png | Bin 40951 -> 0 bytes docs/index.html | 2 - include/uevloop/system/event.h | 3 +- include/uevloop/system/signal.h | 11 + src/system/event-loop.c | 6 + src/system/event.c | 5 + src/system/signal.c | 16 + 445 files changed, 58 insertions(+), 25428 deletions(-) create mode 100644 .vscode/c_cpp_properties.json delete mode 100644 docs/html/annotated.html delete mode 100644 docs/html/application_8h.html delete mode 100644 docs/html/application_8h__incl.map delete mode 100644 docs/html/application_8h__incl.md5 delete mode 100644 docs/html/application_8h__incl.png delete mode 100644 docs/html/application_8h_source.html delete mode 100644 docs/html/automatic-pool_8h.html delete mode 100644 docs/html/automatic-pool_8h__incl.map delete mode 100644 docs/html/automatic-pool_8h__incl.md5 delete mode 100644 docs/html/automatic-pool_8h__incl.png delete mode 100644 docs/html/automatic-pool_8h_source.html delete mode 100644 docs/html/bc_s.png delete mode 100644 docs/html/bdwn.png delete mode 100644 docs/html/circular-queue_8h.html delete mode 100644 docs/html/circular-queue_8h__dep__incl.map delete mode 100644 docs/html/circular-queue_8h__dep__incl.md5 delete mode 100644 docs/html/circular-queue_8h__dep__incl.png delete mode 100644 docs/html/circular-queue_8h_source.html delete mode 100644 docs/html/classes.html delete mode 100644 docs/html/closed.png delete mode 100644 docs/html/closure_8h.html delete mode 100644 docs/html/closure_8h__dep__incl.map delete mode 100644 docs/html/closure_8h__dep__incl.md5 delete mode 100644 docs/html/closure_8h__dep__incl.png delete mode 100644 docs/html/closure_8h_source.html delete mode 100644 docs/html/conditional_8h.html delete mode 100644 docs/html/conditional_8h__dep__incl.map delete mode 100644 docs/html/conditional_8h__dep__incl.md5 delete mode 100644 docs/html/conditional_8h__dep__incl.png delete mode 100644 docs/html/conditional_8h__incl.map delete mode 100644 docs/html/conditional_8h__incl.md5 delete mode 100644 docs/html/conditional_8h__incl.png delete mode 100644 docs/html/conditional_8h_source.html delete mode 100644 docs/html/config_8h.html delete mode 100644 docs/html/config_8h__dep__incl.map delete mode 100644 docs/html/config_8h__dep__incl.md5 delete mode 100644 docs/html/config_8h__dep__incl.png delete mode 100644 docs/html/config_8h_source.html delete mode 100644 docs/html/critical-section_8h.html delete mode 100644 docs/html/critical-section_8h_source.html delete mode 100644 docs/html/dir_000003_000004.html delete mode 100644 docs/html/dir_000003_000005.html delete mode 100644 docs/html/dir_000004_000005.html delete mode 100644 docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8.html delete mode 100644 docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.map delete mode 100644 docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.md5 delete mode 100644 docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.png delete mode 100644 docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175.html delete mode 100644 docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.map delete mode 100644 docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.md5 delete mode 100644 docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.png delete mode 100644 docs/html/dir_1c07dc2bb514f68216b7275ce8a19048.html delete mode 100644 docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e.html delete mode 100644 docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.map delete mode 100644 docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.md5 delete mode 100644 docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.png delete mode 100644 docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d.html delete mode 100644 docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.map delete mode 100644 docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.md5 delete mode 100644 docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.png delete mode 100644 docs/html/dir_d44c64559bbebec7f509842c48db8b23.html delete mode 100644 docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.map delete mode 100644 docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.md5 delete mode 100644 docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.png delete mode 100644 docs/html/doc.png delete mode 100644 docs/html/doxygen.css delete mode 100644 docs/html/doxygen.png delete mode 100644 docs/html/dynsections.js delete mode 100644 docs/html/event-loop_8h.html delete mode 100644 docs/html/event-loop_8h__dep__incl.map delete mode 100644 docs/html/event-loop_8h__dep__incl.md5 delete mode 100644 docs/html/event-loop_8h__dep__incl.png delete mode 100644 docs/html/event-loop_8h__incl.map delete mode 100644 docs/html/event-loop_8h__incl.md5 delete mode 100644 docs/html/event-loop_8h__incl.png delete mode 100644 docs/html/event-loop_8h_source.html delete mode 100644 docs/html/event_8h.html delete mode 100644 docs/html/event_8h__dep__incl.map delete mode 100644 docs/html/event_8h__dep__incl.md5 delete mode 100644 docs/html/event_8h__dep__incl.png delete mode 100644 docs/html/event_8h__incl.map delete mode 100644 docs/html/event_8h__incl.md5 delete mode 100644 docs/html/event_8h__incl.png delete mode 100644 docs/html/event_8h_source.html delete mode 100644 docs/html/files.html delete mode 100644 docs/html/folderclosed.png delete mode 100644 docs/html/folderopen.png delete mode 100644 docs/html/functional_8h.html delete mode 100644 docs/html/functional_8h__incl.map delete mode 100644 docs/html/functional_8h__incl.md5 delete mode 100644 docs/html/functional_8h__incl.png delete mode 100644 docs/html/functional_8h_source.html delete mode 100644 docs/html/functions.html delete mode 100644 docs/html/functions_vars.html delete mode 100644 docs/html/globals.html delete mode 100644 docs/html/globals_defs.html delete mode 100644 docs/html/globals_enum.html delete mode 100644 docs/html/globals_eval.html delete mode 100644 docs/html/globals_func.html delete mode 100644 docs/html/globals_type.html delete mode 100644 docs/html/graph_legend.html delete mode 100644 docs/html/graph_legend.md5 delete mode 100644 docs/html/graph_legend.png delete mode 100644 docs/html/index.html delete mode 100644 docs/html/iterator_8h.html delete mode 100644 docs/html/iterator_8h__dep__incl.map delete mode 100644 docs/html/iterator_8h__dep__incl.md5 delete mode 100644 docs/html/iterator_8h__dep__incl.png delete mode 100644 docs/html/iterator_8h__incl.map delete mode 100644 docs/html/iterator_8h__incl.md5 delete mode 100644 docs/html/iterator_8h__incl.png delete mode 100644 docs/html/iterator_8h_source.html delete mode 100644 docs/html/jquery.js delete mode 100644 docs/html/linked-list_8h.html delete mode 100644 docs/html/linked-list_8h__dep__incl.map delete mode 100644 docs/html/linked-list_8h__dep__incl.md5 delete mode 100644 docs/html/linked-list_8h__dep__incl.png delete mode 100644 docs/html/linked-list_8h__incl.map delete mode 100644 docs/html/linked-list_8h__incl.md5 delete mode 100644 docs/html/linked-list_8h__incl.png delete mode 100644 docs/html/linked-list_8h_source.html delete mode 100644 docs/html/menu.js delete mode 100644 docs/html/menudata.js delete mode 100644 docs/html/module_8h.html delete mode 100644 docs/html/module_8h__dep__incl.map delete mode 100644 docs/html/module_8h__dep__incl.md5 delete mode 100644 docs/html/module_8h__dep__incl.png delete mode 100644 docs/html/module_8h_source.html delete mode 100644 docs/html/nav_f.png delete mode 100644 docs/html/nav_g.png delete mode 100644 docs/html/nav_h.png delete mode 100644 docs/html/object-pool_8h.html delete mode 100644 docs/html/object-pool_8h__dep__incl.map delete mode 100644 docs/html/object-pool_8h__dep__incl.md5 delete mode 100644 docs/html/object-pool_8h__dep__incl.png delete mode 100644 docs/html/object-pool_8h__incl.map delete mode 100644 docs/html/object-pool_8h__incl.md5 delete mode 100644 docs/html/object-pool_8h__incl.png delete mode 100644 docs/html/object-pool_8h_source.html delete mode 100644 docs/html/open.png delete mode 100644 docs/html/pipeline_8h.html delete mode 100644 docs/html/pipeline_8h__dep__incl.map delete mode 100644 docs/html/pipeline_8h__dep__incl.md5 delete mode 100644 docs/html/pipeline_8h__dep__incl.png delete mode 100644 docs/html/pipeline_8h__incl.map delete mode 100644 docs/html/pipeline_8h__incl.md5 delete mode 100644 docs/html/pipeline_8h__incl.png delete mode 100644 docs/html/pipeline_8h_source.html delete mode 100644 docs/html/promise_8h.html delete mode 100644 docs/html/promise_8h__dep__incl.map delete mode 100644 docs/html/promise_8h__dep__incl.md5 delete mode 100644 docs/html/promise_8h__dep__incl.png delete mode 100644 docs/html/promise_8h__incl.map delete mode 100644 docs/html/promise_8h__incl.md5 delete mode 100644 docs/html/promise_8h__incl.png delete mode 100644 docs/html/promise_8h_source.html delete mode 100644 docs/html/scheduler_8h.html delete mode 100644 docs/html/scheduler_8h__dep__incl.map delete mode 100644 docs/html/scheduler_8h__dep__incl.md5 delete mode 100644 docs/html/scheduler_8h__dep__incl.png delete mode 100644 docs/html/scheduler_8h__incl.map delete mode 100644 docs/html/scheduler_8h__incl.md5 delete mode 100644 docs/html/scheduler_8h__incl.png delete mode 100644 docs/html/scheduler_8h_source.html delete mode 100644 docs/html/search/all_0.html delete mode 100644 docs/html/search/all_0.js delete mode 100644 docs/html/search/all_1.html delete mode 100644 docs/html/search/all_1.js delete mode 100644 docs/html/search/all_10.html delete mode 100644 docs/html/search/all_10.js delete mode 100644 docs/html/search/all_11.html delete mode 100644 docs/html/search/all_11.js delete mode 100644 docs/html/search/all_12.html delete mode 100644 docs/html/search/all_12.js delete mode 100644 docs/html/search/all_13.html delete mode 100644 docs/html/search/all_13.js delete mode 100644 docs/html/search/all_14.html delete mode 100644 docs/html/search/all_14.js delete mode 100644 docs/html/search/all_2.html delete mode 100644 docs/html/search/all_2.js delete mode 100644 docs/html/search/all_3.html delete mode 100644 docs/html/search/all_3.js delete mode 100644 docs/html/search/all_4.html delete mode 100644 docs/html/search/all_4.js delete mode 100644 docs/html/search/all_5.html delete mode 100644 docs/html/search/all_5.js delete mode 100644 docs/html/search/all_6.html delete mode 100644 docs/html/search/all_6.js delete mode 100644 docs/html/search/all_7.html delete mode 100644 docs/html/search/all_7.js delete mode 100644 docs/html/search/all_8.html delete mode 100644 docs/html/search/all_8.js delete mode 100644 docs/html/search/all_9.html delete mode 100644 docs/html/search/all_9.js delete mode 100644 docs/html/search/all_a.html delete mode 100644 docs/html/search/all_a.js delete mode 100644 docs/html/search/all_b.html delete mode 100644 docs/html/search/all_b.js delete mode 100644 docs/html/search/all_c.html delete mode 100644 docs/html/search/all_c.js delete mode 100644 docs/html/search/all_d.html delete mode 100644 docs/html/search/all_d.js delete mode 100644 docs/html/search/all_e.html delete mode 100644 docs/html/search/all_e.js delete mode 100644 docs/html/search/all_f.html delete mode 100644 docs/html/search/all_f.js delete mode 100644 docs/html/search/classes_0.html delete mode 100644 docs/html/search/classes_0.js delete mode 100644 docs/html/search/classes_1.html delete mode 100644 docs/html/search/classes_1.js delete mode 100644 docs/html/search/classes_2.html delete mode 100644 docs/html/search/classes_2.js delete mode 100644 docs/html/search/close.png delete mode 100644 docs/html/search/defines_0.html delete mode 100644 docs/html/search/defines_0.js delete mode 100644 docs/html/search/enums_0.html delete mode 100644 docs/html/search/enums_0.js delete mode 100644 docs/html/search/enumvalues_0.html delete mode 100644 docs/html/search/enumvalues_0.js delete mode 100644 docs/html/search/files_0.html delete mode 100644 docs/html/search/files_0.js delete mode 100644 docs/html/search/files_1.html delete mode 100644 docs/html/search/files_1.js delete mode 100644 docs/html/search/files_2.html delete mode 100644 docs/html/search/files_2.js delete mode 100644 docs/html/search/files_3.html delete mode 100644 docs/html/search/files_3.js delete mode 100644 docs/html/search/files_4.html delete mode 100644 docs/html/search/files_4.js delete mode 100644 docs/html/search/files_5.html delete mode 100644 docs/html/search/files_5.js delete mode 100644 docs/html/search/files_6.html delete mode 100644 docs/html/search/files_6.js delete mode 100644 docs/html/search/files_7.html delete mode 100644 docs/html/search/files_7.js delete mode 100644 docs/html/search/files_8.html delete mode 100644 docs/html/search/files_8.js delete mode 100644 docs/html/search/files_9.html delete mode 100644 docs/html/search/files_9.js delete mode 100644 docs/html/search/functions_0.html delete mode 100644 docs/html/search/functions_0.js delete mode 100644 docs/html/search/mag_sel.png delete mode 100644 docs/html/search/nomatches.html delete mode 100644 docs/html/search/pages_0.html delete mode 100644 docs/html/search/pages_0.js delete mode 100644 docs/html/search/search.css delete mode 100644 docs/html/search/search.js delete mode 100644 docs/html/search/search_l.png delete mode 100644 docs/html/search/search_m.png delete mode 100644 docs/html/search/search_r.png delete mode 100644 docs/html/search/searchdata.js delete mode 100644 docs/html/search/typedefs_0.html delete mode 100644 docs/html/search/typedefs_0.js delete mode 100644 docs/html/search/variables_0.html delete mode 100644 docs/html/search/variables_0.js delete mode 100644 docs/html/search/variables_1.html delete mode 100644 docs/html/search/variables_1.js delete mode 100644 docs/html/search/variables_10.html delete mode 100644 docs/html/search/variables_10.js delete mode 100644 docs/html/search/variables_11.html delete mode 100644 docs/html/search/variables_11.js delete mode 100644 docs/html/search/variables_12.html delete mode 100644 docs/html/search/variables_12.js delete mode 100644 docs/html/search/variables_13.html delete mode 100644 docs/html/search/variables_13.js delete mode 100644 docs/html/search/variables_2.html delete mode 100644 docs/html/search/variables_2.js delete mode 100644 docs/html/search/variables_3.html delete mode 100644 docs/html/search/variables_3.js delete mode 100644 docs/html/search/variables_4.html delete mode 100644 docs/html/search/variables_4.js delete mode 100644 docs/html/search/variables_5.html delete mode 100644 docs/html/search/variables_5.js delete mode 100644 docs/html/search/variables_6.html delete mode 100644 docs/html/search/variables_6.js delete mode 100644 docs/html/search/variables_7.html delete mode 100644 docs/html/search/variables_7.js delete mode 100644 docs/html/search/variables_8.html delete mode 100644 docs/html/search/variables_8.js delete mode 100644 docs/html/search/variables_9.html delete mode 100644 docs/html/search/variables_9.js delete mode 100644 docs/html/search/variables_a.html delete mode 100644 docs/html/search/variables_a.js delete mode 100644 docs/html/search/variables_b.html delete mode 100644 docs/html/search/variables_b.js delete mode 100644 docs/html/search/variables_c.html delete mode 100644 docs/html/search/variables_c.js delete mode 100644 docs/html/search/variables_d.html delete mode 100644 docs/html/search/variables_d.js delete mode 100644 docs/html/search/variables_e.html delete mode 100644 docs/html/search/variables_e.js delete mode 100644 docs/html/search/variables_f.html delete mode 100644 docs/html/search/variables_f.js delete mode 100644 docs/html/signal_8h.html delete mode 100644 docs/html/signal_8h__dep__incl.map delete mode 100644 docs/html/signal_8h__dep__incl.md5 delete mode 100644 docs/html/signal_8h__dep__incl.png delete mode 100644 docs/html/signal_8h__incl.map delete mode 100644 docs/html/signal_8h__incl.md5 delete mode 100644 docs/html/signal_8h__incl.png delete mode 100644 docs/html/signal_8h_source.html delete mode 100644 docs/html/splitbar.png delete mode 100644 docs/html/structevent.html delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener.html delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.map delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.md5 delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.png delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer.html delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.map delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.md5 delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.png delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal.html delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.map delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.md5 delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.png delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer.html delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.map delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.md5 delete mode 100644 docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.png delete mode 100644 docs/html/structevent__coll__graph.map delete mode 100644 docs/html/structevent__coll__graph.md5 delete mode 100644 docs/html/structevent__coll__graph.png delete mode 100644 docs/html/structsyspools.html delete mode 100644 docs/html/structsyspools__coll__graph.map delete mode 100644 docs/html/structsyspools__coll__graph.md5 delete mode 100644 docs/html/structsyspools__coll__graph.png delete mode 100644 docs/html/structsysqueues.html delete mode 100644 docs/html/structsysqueues__coll__graph.map delete mode 100644 docs/html/structsysqueues__coll__graph.md5 delete mode 100644 docs/html/structsysqueues__coll__graph.png delete mode 100644 docs/html/structuel__application.html delete mode 100644 docs/html/structuel__application__coll__graph.map delete mode 100644 docs/html/structuel__application__coll__graph.md5 delete mode 100644 docs/html/structuel__application__coll__graph.png delete mode 100644 docs/html/structuel__autopool.html delete mode 100644 docs/html/structuel__autopool__coll__graph.map delete mode 100644 docs/html/structuel__autopool__coll__graph.md5 delete mode 100644 docs/html/structuel__autopool__coll__graph.png delete mode 100644 docs/html/structuel__autoptr.html delete mode 100644 docs/html/structuel__autoptr__coll__graph.map delete mode 100644 docs/html/structuel__autoptr__coll__graph.md5 delete mode 100644 docs/html/structuel__autoptr__coll__graph.png delete mode 100644 docs/html/structuel__closure.html delete mode 100644 docs/html/structuel__closure__coll__graph.map delete mode 100644 docs/html/structuel__closure__coll__graph.md5 delete mode 100644 docs/html/structuel__closure__coll__graph.png delete mode 100644 docs/html/structuel__conditional.html delete mode 100644 docs/html/structuel__conditional__coll__graph.map delete mode 100644 docs/html/structuel__conditional__coll__graph.md5 delete mode 100644 docs/html/structuel__conditional__coll__graph.png delete mode 100644 docs/html/structuel__cqueue.html delete mode 100644 docs/html/structuel__cqueue__coll__graph.map delete mode 100644 docs/html/structuel__cqueue__coll__graph.md5 delete mode 100644 docs/html/structuel__cqueue__coll__graph.png delete mode 100644 docs/html/structuel__evloop.html delete mode 100644 docs/html/structuel__evloop__coll__graph.map delete mode 100644 docs/html/structuel__evloop__coll__graph.md5 delete mode 100644 docs/html/structuel__evloop__coll__graph.png delete mode 100644 docs/html/structuel__func__mapper.html delete mode 100644 docs/html/structuel__func__mapper__coll__graph.map delete mode 100644 docs/html/structuel__func__mapper__coll__graph.md5 delete mode 100644 docs/html/structuel__func__mapper__coll__graph.png delete mode 100644 docs/html/structuel__iterator.html delete mode 100644 docs/html/structuel__iterator__array.html delete mode 100644 docs/html/structuel__iterator__array__coll__graph.map delete mode 100644 docs/html/structuel__iterator__array__coll__graph.md5 delete mode 100644 docs/html/structuel__iterator__array__coll__graph.png delete mode 100644 docs/html/structuel__iterator__coll__graph.map delete mode 100644 docs/html/structuel__iterator__coll__graph.md5 delete mode 100644 docs/html/structuel__iterator__coll__graph.png delete mode 100644 docs/html/structuel__llist.html delete mode 100644 docs/html/structuel__llist__coll__graph.map delete mode 100644 docs/html/structuel__llist__coll__graph.md5 delete mode 100644 docs/html/structuel__llist__coll__graph.png delete mode 100644 docs/html/structuel__llist__node.html delete mode 100644 docs/html/structuel__llist__node__coll__graph.map delete mode 100644 docs/html/structuel__llist__node__coll__graph.md5 delete mode 100644 docs/html/structuel__llist__node__coll__graph.png delete mode 100644 docs/html/structuel__module.html delete mode 100644 docs/html/structuel__module__coll__graph.map delete mode 100644 docs/html/structuel__module__coll__graph.md5 delete mode 100644 docs/html/structuel__module__coll__graph.png delete mode 100644 docs/html/structuel__objpool.html delete mode 100644 docs/html/structuel__objpool__coll__graph.map delete mode 100644 docs/html/structuel__objpool__coll__graph.md5 delete mode 100644 docs/html/structuel__objpool__coll__graph.png delete mode 100644 docs/html/structuel__pipeline.html delete mode 100644 docs/html/structuel__pipeline__coll__graph.map delete mode 100644 docs/html/structuel__pipeline__coll__graph.md5 delete mode 100644 docs/html/structuel__pipeline__coll__graph.png delete mode 100644 docs/html/structuel__promise.html delete mode 100644 docs/html/structuel__promise__coll__graph.map delete mode 100644 docs/html/structuel__promise__coll__graph.md5 delete mode 100644 docs/html/structuel__promise__coll__graph.png delete mode 100644 docs/html/structuel__promise__segment.html delete mode 100644 docs/html/structuel__promise__segment__coll__graph.map delete mode 100644 docs/html/structuel__promise__segment__coll__graph.md5 delete mode 100644 docs/html/structuel__promise__segment__coll__graph.png delete mode 100644 docs/html/structuel__promise__store.html delete mode 100644 docs/html/structuel__promise__store__coll__graph.map delete mode 100644 docs/html/structuel__promise__store__coll__graph.md5 delete mode 100644 docs/html/structuel__promise__store__coll__graph.png delete mode 100644 docs/html/structuel__scheduler.html delete mode 100644 docs/html/structuel__scheduler__coll__graph.map delete mode 100644 docs/html/structuel__scheduler__coll__graph.md5 delete mode 100644 docs/html/structuel__scheduler__coll__graph.png delete mode 100644 docs/html/structuel__signal__relay.html delete mode 100644 docs/html/structuel__signal__relay__coll__graph.map delete mode 100644 docs/html/structuel__signal__relay__coll__graph.md5 delete mode 100644 docs/html/structuel__signal__relay__coll__graph.png delete mode 100644 docs/html/sync_off.png delete mode 100644 docs/html/sync_on.png delete mode 100644 docs/html/system-pools_8h.html delete mode 100644 docs/html/system-pools_8h__dep__incl.map delete mode 100644 docs/html/system-pools_8h__dep__incl.md5 delete mode 100644 docs/html/system-pools_8h__dep__incl.png delete mode 100644 docs/html/system-pools_8h__incl.map delete mode 100644 docs/html/system-pools_8h__incl.md5 delete mode 100644 docs/html/system-pools_8h__incl.png delete mode 100644 docs/html/system-pools_8h_source.html delete mode 100644 docs/html/system-queues_8h.html delete mode 100644 docs/html/system-queues_8h__dep__incl.map delete mode 100644 docs/html/system-queues_8h__dep__incl.md5 delete mode 100644 docs/html/system-queues_8h__dep__incl.png delete mode 100644 docs/html/system-queues_8h__incl.map delete mode 100644 docs/html/system-queues_8h__incl.md5 delete mode 100644 docs/html/system-queues_8h__incl.png delete mode 100644 docs/html/system-queues_8h_source.html delete mode 100644 docs/html/tab_a.png delete mode 100644 docs/html/tab_b.png delete mode 100644 docs/html/tab_h.png delete mode 100644 docs/html/tab_s.png delete mode 100644 docs/html/tabs.css delete mode 100644 docs/html/unionevent_1_1uel__event__detail.html delete mode 100644 docs/html/unionevent_1_1uel__event__detail__coll__graph.map delete mode 100644 docs/html/unionevent_1_1uel__event__detail__coll__graph.md5 delete mode 100644 docs/html/unionevent_1_1uel__event__detail__coll__graph.png delete mode 100644 docs/index.html diff --git a/.gitignore b/.gitignore index 7816b81..d74e3e9 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build dist coverage +.vscode/* \ No newline at end of file diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..45fac2d --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/**", + "${workspaceFolder}/include" + ], + "defines": [], + "compilerPath": "/usr/bin/clang", + "cStandard": "c17", + "cppStandard": "c++14", + "intelliSenseMode": "linux-clang-x64" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/docs/html/annotated.html b/docs/html/annotated.html deleted file mode 100644 index 02d3db6..0000000 --- a/docs/html/annotated.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -µEvLoop: Data Structures - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Data Structures
-
-
-
Here are the data structures with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 Cuel_application_tTop-level container for µEvLoop'd application
 Cuel_autopool_tAutomatic pools are wrappers to object pools. They manage the acquisition and release cycle from objects issued at the pool by wrapping them in automatic pointers
 Cuel_autoptrAutomatic pointers are pointers wrapped by information of where they were issued
 Cuel_closure_tDefines a closure, a tuple <function, context, destructor>
 Cuel_conditional_tConditionals are constructs that provide functional flow control
 Cuel_cqueue_tDefines a circular queue of void pointers
 Cuel_event_tEvents are special messages passed around the core. They represent tasks to be run at some point by the system
 Cuel_event_detail
 Cuel_event_listenerContains the context of a particular signal listener
 Cuel_event_observerContains the reference to an observer variable
 Cuel_event_signalContains information related to an emitted signal
 Cuel_event_timerContains information suitable for scheduling an event at the scheduler
 Cuel_evloop_tThe event loop object
 Cuel_func_mapper_tMaps elements of an iterator to an area of memory. Each element is assigned to a void pointer slot
 Cuel_iterator_array_tA specialised iterator suitable for iterating over arrays of arbitrary data
 Cuel_iterator_tIterators are data structures that wrap arbitrary collections of data and define ways of enumerating them
 Cuel_llist_node_tDefines a node of the linked list. Holds a void pointer
 Cuel_llist_tDefines a linked list. If it is empty, head == tail == NULL. Pushing or popping from both the head or tail is always O(1)
 Cuel_module_tA module is an isolated unit of behaviour with lifecycle hooks
 Cuel_objpool_tPre-allocated memory bound to speciffic types suitable for providing dynamic object management in the stack
 Cuel_pipeline_tA pipeline is an ordered closure list to be run in sequence
 Cuel_promise_segment_tDefines a single synchronous operation to be invoked when the promise is either resolved or rejected
 Cuel_promise_store_tAn issuer of promises. Contains references to pools for promises and segments
 Cuel_promise_tA promise is association of an asynchronous operation to the possible execution paths that follow its resolution. It is also a holder for the value it was settled with
 Cuel_scheduer_tThe scheduler object
 Cuel_signal_relay_tContains a signal vector and operates on in
 Cuel_syspools_tA container for the system pools
 Cuel_sysqueues_tA container for the system's internal queues
-
-
- - - - diff --git a/docs/html/application_8h.html b/docs/html/application_8h.html deleted file mode 100644 index 3e7b090..0000000 --- a/docs/html/application_8h.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/application.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
application.h File Reference
-
-
- -

The application module is a convenient top-level container for the system internals. -More...

-
-Include dependency graph for application.h:
-
-
- - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_application_t
 Top-level container for µEvLoop'd application. More...
 
- - - - -

-Typedefs

-typedef enum uel_app_event uel_app_event_t
 Alias to the uel_app_event enum.
 
- - - - -

-Enumerations

enum  uel_app_event { UEL_APP_READY = 0, -UEL_APP_CRASHED, -UEL_APP_IDLE, -UEL_APP_EVENT_COUNT - }
 Events emitted by the application relay. Unused ATM.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void uel_app_init (uel_application_t *app)
 Initialises an uel_application_t instance. More...
 
void uel_app_load (uel_application_t *app, uel_module_t **modules, size_t module_count)
 Loads modules into an application and run their lifecycle hooks. More...
 
uel_module_t * uel_app_require (uel_application_t *app, size_t id)
 Fetches a module from the app's registry. More...
 
void uel_app_tick (uel_application_t *app)
 Ticks the application. More...
 
void uel_app_update_timer (uel_application_t *app, uint32_t timer)
 Updates the internal timer of an application, located at the scheduler. More...
 
uel_event_t * uel_app_run_later (uel_application_t *app, uint16_t timeout_in_ms, uel_closure_t closure, void *value)
 Enqueues a closure for later execution. More...
 
uel_event_t * uel_app_run_at_intervals (uel_application_t *app, uint16_t interval_in_ms, bool immediate, uel_closure_t closure, void *value)
 Enqueues a closure for execution at intervals. More...
 
void uel_app_enqueue_closure (uel_application_t *app, uel_closure_t *closure, void *value)
 Enqueues a closure to be invoked. More...
 
uel_event_t * uel_app_observe (uel_application_t *app, volatile uintptr_t *condition_var, uel_closure_t *closure)
 Sets up an observer. More...
 
-

Detailed Description

-

The application module is a convenient top-level container for the system internals.

-

Function Documentation

- -

◆ uel_app_enqueue_closure()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_app_enqueue_closure (uel_application_t * app,
uel_closure_t * closure,
void * value 
)
-
- -

Enqueues a closure to be invoked.

-

Proxies the call to uel_evloop_enqueue_closure() with uel_application_t::event_loop as parameter.

-
Parameters
- - - - -
appThe uel_application_t instance
closureThe closure to be enqueued
valueThe value to invoked the closure with
-
-
- -
-
- -

◆ uel_app_init()

- -
-
- - - - - - - - -
void uel_app_init (uel_application_t * app)
-
- -

Initialises an uel_application_t instance.

-
Parameters
- - -
appThe uel_application_t instance
-
-
- -
-
- -

◆ uel_app_load()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_app_load (uel_application_t * app,
uel_module_t ** modules,
size_t module_count 
)
-
- -

Loads modules into an application and run their lifecycle hooks.

-
Parameters
- - - - -
appThe application onto which to load the modules
modulesThe modules to be loaded
module_countThe number of modules being loaded
-
-
- -
-
- -

◆ uel_app_observe()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uel_event_t* uel_app_observe (uel_application_t * app,
volatile uintptr_t * condition_var,
uel_closure_t * closure 
)
-
- -

Sets up an observer.

-

Proxies the call to uel_evloop_observe() with uel_application_t::event_loop as parameter.

-
Parameters
- - - - -
appThe uel_application_t instance
condition_varThe address of the value to be observed
closureThe closure to be invoked on change dection
-
-
-
Returns
The observer event associated with this operation
- -
-
- -

◆ uel_app_require()

- -
-
- - - - - - - - - - - - - - - - - - -
uel_module_t* uel_app_require (uel_application_t * app,
size_t id 
)
-
- -

Fetches a module from the app's registry.

-
Parameters
- - - -
appThe application from where to fetch the module
idThe module ID to be fetched
-
-
-
Returns
The module at idth position in the registry
- -
-
- -

◆ uel_app_run_at_intervals()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uel_event_t* uel_app_run_at_intervals (uel_application_t * app,
uint16_t interval_in_ms,
bool immediate,
uel_closure_t closure,
void * value 
)
-
- -

Enqueues a closure for execution at intervals.

-

Proxies the call to uel_sch_run_at_intervals() with uel_application_t::scheduler as parameter.

-
Parameters
- - - - - - -
appThe uel_application_t instance
interval_in_msThe delay in milliseconds two executions of the closure
immediateIf this flag is set, the the event will be created with a due time to the current time.
closureThe closure to be invoked when the due time is reached
valueThe value to invoked the closure with
-
-
-
Returns
The timer event associated with this operation
- -
-
- -

◆ uel_app_run_later()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uel_event_t* uel_app_run_later (uel_application_t * app,
uint16_t timeout_in_ms,
uel_closure_t closure,
void * value 
)
-
- -

Enqueues a closure for later execution.

-

Proxies the call to uel_sch_run_later() with uel_application_t::scheduler as parameter.

-
Parameters
- - - - - -
appThe uel_application_t instance
timeout_in_msThe delay in milliseconds until the closure is run
closureThe closure to be invoked when the due time is reached
valueThe value to invoked the closure with
-
-
-
Returns
The timer event associated with this operation
- -
-
- -

◆ uel_app_tick()

- -
-
- - - - - - - - -
void uel_app_tick (uel_application_t * app)
-
- -

Ticks the application.

-

Yields control to the application runtime. This will:

    -
  1. Check if the scheduler ought to be run (i.e.: the counter has been updated or there are events awaiting rescheduling) and do so if necessary
  2. -
  3. Perform a runloop
  4. -
-
Parameters
- - -
appThe uel_application_t instance
-
-
- -
-
- -

◆ uel_app_update_timer()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_app_update_timer (uel_application_t * app,
uint32_t timer 
)
-
- -

Updates the internal timer of an application, located at the scheduler.

-
Parameters
- - - -
appThe uel_application_t instance
timerThe current application timer, in milliseconds
-
-
- -
-
-
- - - - diff --git a/docs/html/application_8h__incl.map b/docs/html/application_8h__incl.map deleted file mode 100644 index 6822142..0000000 --- a/docs/html/application_8h__incl.map +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/docs/html/application_8h__incl.md5 b/docs/html/application_8h__incl.md5 deleted file mode 100644 index d2fcc45..0000000 --- a/docs/html/application_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ee75ab967f4694f782f6fd9e7979ccb6 \ No newline at end of file diff --git a/docs/html/application_8h__incl.png b/docs/html/application_8h__incl.png deleted file mode 100644 index e32854242da56b3273ef1e7cf07e01d1896cdd43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114139 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

+b^Y+5t_vP?qAC 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 F{{a diff --git a/docs/html/application_8h_source.html b/docs/html/application_8h_source.html deleted file mode 100644 index e4d2c6a..0000000 --- a/docs/html/application_8h_source.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/application.h Source File - - - - - - - - - -

-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
application.h
-
-
-Go to the documentation of this file.
1 
-
6 #ifndef UEL_APPLICATION_H
-
7 #define UEL_APPLICATION_H
-
8 #include <stdint.h>
-
10 #include <stdbool.h>
-
11 #include <stdlib.h>
-
13 
- - - - -
18 #include "uevloop/system/signal.h"
-
19 #include "uevloop/utils/module.h"
-
20 
- -
23  UEL_APP_READY = 0,
-
24  UEL_APP_CRASHED,
-
25  UEL_APP_IDLE,
-
26  UEL_APP_EVENT_COUNT
-
27 };
- -
30 
-
38 typedef struct uel_application uel_application_t;
- -
40  uel_module_t **registry;
-
41  size_t registry_size;
-
42  uel_syspools_t pools;
-
43  uel_sysqueues_t queues;
-
44  uel_evloop_t event_loop;
-
45  uel_scheduer_t scheduler;
-
46  uel_signal_relay_t relay;
-
47  uel_llist_t relay_buffer[UEL_APP_EVENT_COUNT];
- -
49 };
-
50 
-
54 void uel_app_init(uel_application_t *app);
-
55 
-
62 void uel_app_load(uel_application_t *app, uel_module_t **modules, size_t module_count);
-
63 
-
71 uel_module_t *uel_app_require(uel_application_t *app, size_t id);
-
72 
-
82 void uel_app_tick(uel_application_t *app);
-
83 
-
89 void uel_app_update_timer(uel_application_t *app, uint32_t timer);
-
90 
-
102  uel_event_t *uel_app_run_later(
-
103  uel_application_t *app,
-
104  uint16_t timeout_in_ms,
-
105  uel_closure_t closure,
-
106  void *value
-
107  );
-
108 
-
122 uel_event_t *uel_app_run_at_intervals(
-
123  uel_application_t *app,
-
124  uint16_t interval_in_ms,
-
125  bool immediate,
-
126  uel_closure_t closure,
-
127  void *value
-
128 );
-
129 
- -
140  uel_application_t *app,
-
141  uel_closure_t *closure,
-
142  void *value
-
143 );
-
144 
-
156 uel_event_t *uel_app_observe(
-
157  uel_application_t *app,
-
158  volatile uintptr_t *condition_var,
-
159  uel_closure_t *closure
-
160 );
-
161 
-
162 #endif /* end of include guard: UEL_APPLICATION_H */
-
-
enum uel_app_event uel_app_event_t
Alias to the uel_app_event enum.
Definition: application.h:29
-
uel_module_t * uel_app_require(uel_application_t *app, size_t id)
Fetches a module from the app's registry.
- -
uel_llist_t relay_buffer[UEL_APP_EVENT_COUNT]
Unused.
Definition: application.h:47
-
uel_signal_relay_t relay
Unused.
Definition: application.h:46
-
Module responsible for keeping track of time and tasks to be run in the future.
-
uel_evloop_t event_loop
The application's event loop.
Definition: application.h:44
-
uel_scheduer_t scheduler
The applications's scheduler;.
Definition: application.h:45
-
size_t registry_size
The number of modules managed by this application.
Definition: application.h:41
-
uel_event_t * uel_app_run_later(uel_application_t *app, uint16_t timeout_in_ms, uel_closure_t closure, void *value)
Enqueues a closure for later execution.
-
void uel_app_enqueue_closure(uel_application_t *app, uel_closure_t *closure, void *value)
Enqueues a closure to be invoked.
-
uel_syspools_t pools
Holds the system pools: events and llist nodes.
Definition: application.h:42
-
uel_event_t * uel_app_observe(uel_application_t *app, volatile uintptr_t *condition_var, uel_closure_t *closure)
Sets up an observer.
-
Defines signals and relays, structures used to communicate asynchronously between distant parts of th...
-
void uel_app_init(uel_application_t *app)
Initialises an uel_application_t instance.
-
uel_app_event
Events emitted by the application relay. Unused ATM.
Definition: application.h:22
-
Top-level container for µEvLoop'd application.
Definition: application.h:39
-
uel_module_t ** registry
The modules managed by this application.
Definition: application.h:40
-
void uel_app_tick(uel_application_t *app)
Ticks the application.
-
bool run_scheduler
Marks when it's time to wake the scheduler.
Definition: application.h:48
-
void uel_app_update_timer(uel_application_t *app, uint32_t timer)
Updates the internal timer of an application, located at the scheduler.
-
A container for the system's internal queues.
-
void uel_app_load(uel_application_t *app, uel_module_t **modules, size_t module_count)
Loads modules into an application and run their lifecycle hooks.
-
uel_event_t * uel_app_run_at_intervals(uel_application_t *app, uint16_t interval_in_ms, bool immediate, uel_closure_t closure, void *value)
Enqueues a closure for execution at intervals.
-
A container for the system's internal pools.
-
Module responsible for running enqueued events and process them accordingly.
-
uel_sysqueues_t queues
Holds the system event queues.
Definition: application.h:43
- - - - diff --git a/docs/html/automatic-pool_8h.html b/docs/html/automatic-pool_8h.html deleted file mode 100644 index 75a2a14..0000000 --- a/docs/html/automatic-pool_8h.html +++ /dev/null @@ -1,539 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/automatic-pool.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
automatic-pool.h File Reference
-
-
- -

Defines automatic pointers and automatic pools, objects that wrap object pools and objects managed by them. These wrappers provide basic automatic memory management. -More...

-
-Include dependency graph for automatic-pool.h:
-
-
- - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Data Structures

struct  uel_autoptr
 Automatic pointers are pointers wrapped by information of where they were issued. More...
 
struct  uel_autopool_t
 Automatic pools are wrappers to object pools. They manage the acquisition and release cycle from objects issued at the pool by wrapping them in automatic pointers. More...
 
- - - - - - - - - - - - - -

-Macros

#define UEL_DECLARE_AUTOPOOL_BUFFERS(type, size_log2n, id)
 Declares the necessary buffers to back an automatic pool, so the programmer doesn't have to reason much about it. More...
 
#define UEL_AUTOPOOL_BUFFERS(id)   (uint8_t *)&id##_buffer, id##_pool_buffer, id##_pool_queue_buffer
 Refers to a previously declared buffer set. More...
 
#define UEL_AUTOPOOL_BUFFERS_IN(id, obj)
 Refers to a previously declared buffer set. More...
 
#define UEL_AUTOPOOL_BUFFERS_AT(id, obj)
 Refers to a previously declared buffer set. More...
 
- - - - -

-Typedefs

-typedef void ** uel_autoptr_t
 Aliases uel_autoptr_t to void ** so it can be cast to pointers to other types.
 
- - - - - - - - - - - - - - - - - - - -

-Functions

void uel_autoptr_dealloc (uel_autoptr_t autoptr)
 Deallocates an automatic pointer. More...
 
void uel_autopool_init (uel_autopool_t *pool, size_t size_log2n, size_t item_size, uint8_t *object_buffer, struct uel_autoptr *autoptr_buffer, void **queue_buffer)
 Initialises an automatic pool. More...
 
uel_autoptr_t uel_autopool_alloc (uel_autopool_t *pool)
 Allocates an object and wrap it in a automatic pointer. More...
 
bool uel_autopool_is_empty (uel_autopool_t *pool)
 Checks if a pool is depleted. More...
 
void uel_autopool_set_constructor (uel_autopool_t *pool, uel_closure_t constructor)
 Sets the constructor closure of an autopool. More...
 
void uel_autopool_set_destructor (uel_autopool_t *pool, uel_closure_t destructor)
 Sets the destructor closure of an autopool. More...
 
-

Detailed Description

-

Defines automatic pointers and automatic pools, objects that wrap object pools and objects managed by them. These wrappers provide basic automatic memory management.

-

Macro Definition Documentation

- -

◆ UEL_AUTOPOOL_BUFFERS

- -
-
- - - - - - - - -
#define UEL_AUTOPOOL_BUFFERS( id)   (uint8_t *)&id##_buffer, id##_pool_buffer, id##_pool_queue_buffer
-
- -

Refers to a previously declared buffer set.

-

This is a convenience macro to supply the buffers generated by UEL_DECLARE_AUTOPOOL_BUFFERS() to the uel_autopool_init() function.

-
Parameters
- - -
idThe identifier used to declare the pool buffers
-
-
- -
-
- -

◆ UEL_AUTOPOOL_BUFFERS_AT

- -
-
- - - - - - - - - - - - - - - - - - -
#define UEL_AUTOPOOL_BUFFERS_AT( id,
 obj 
)
-
-Value:
(uint8_t *)&obj->id##_buffer, obj->id##_pool_buffer, \
-
obj->id##_pool_queue_buffer
-
-

Refers to a previously declared buffer set.

-

This is a convenience macro to supply the buffers generated by UEL_DECLARE_AUTOPOOL_BUFFERS() to the uel_autopool_init() function. Use this if the buffers were defined inside an object whose address is accessible in the current scope

-
Parameters
- - - -
idThe identifier used to declare the pool buffers
objThe address of the object storing the pool buffers
-
-
- -
-
- -

◆ UEL_AUTOPOOL_BUFFERS_IN

- -
-
- - - - - - - - - - - - - - - - - - -
#define UEL_AUTOPOOL_BUFFERS_IN( id,
 obj 
)
-
-Value:
(uint8_t *)&obj.id##_buffer, obj.id##_pool_buffer, \
-
obj.id##_pool_queue_buffer
-
-

Refers to a previously declared buffer set.

-

This is a convenience macro to supply the buffers generated by UEL_DECLARE_AUTOPOOL_BUFFERS() to the uel_autopool_init() function. Use this if the buffers were defined inside a local object, accessible in the current scope.

-
Parameters
- - - -
idThe identifier used to declare the pool buffers
objThe object storing the pool buffers
-
-
- -
-
- -

◆ UEL_DECLARE_AUTOPOOL_BUFFERS

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
#define UEL_DECLARE_AUTOPOOL_BUFFERS( type,
 size_log2n,
 id 
)
-
-Value:
type id##_buffer[(1<<size_log2n)]; \
-
struct uel_autoptr id##_pool_buffer[1<<size_log2n]; \
-
void *id##_pool_queue_buffer[1<<size_log2n];
-
-

Declares the necessary buffers to back an automatic pool, so the programmer doesn't have to reason much about it.

-

Use this macro as a shortcut to create the required buffers for an automatic pool. This will declare three buffers in the calling scope.

-
Parameters
- - - - -
typeThe type of the objects the pool will contain
size_log2nThe number of elements the pool will contain in log2 form
idA valid identifier for the pools.
-
-
- -
-
-

Function Documentation

- -

◆ uel_autopool_alloc()

- -
-
- - - - - - - - -
uel_autoptr_t uel_autopool_alloc (uel_autopool_t * pool)
-
- -

Allocates an object and wrap it in a automatic pointer.

-

The allocated object is submited to the contructor closure set in the autopool.

-
See also
uel_autopool_set_constructor()
-
Parameters
- - -
poolThe automatic pool from where to acquire the object
-
-
-
Returns
An autopointer wrapping the acquired object or NULL if one could not be acquired.
- -
-
- -

◆ uel_autopool_init()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_autopool_init (uel_autopool_t * pool,
size_t size_log2n,
size_t item_size,
uint8_t * object_buffer,
struct uel_autoptrautoptr_buffer,
void ** queue_buffer 
)
-
- -

Initialises an automatic pool.

-
Parameters
- - - - - - - -
poolThe pool to be initialised
size_log2nThe number of objects in the pool in its log2 form
item_sizeThe size of each object in the pool. If special alignment is required, it must be included in this value.
object_bufferThe buffer that contains each object in the pool. Must be 2**size_log2n * item_size long.
autoptr_bufferThe buffer that contains each autoptr object to be issued. Must be 2**size_log2n * item_size long.
queue_bufferA void pointer array that will be used as the buffer to the object pointer queue. Must be 2**size_log2n long.
-
-
- -
-
- -

◆ uel_autopool_is_empty()

- -
-
- - - - - - - - -
bool uel_autopool_is_empty (uel_autopool_t * pool)
-
- -

Checks if a pool is depleted.

-
Parameters
- - -
poolThe pool to be verified
-
-
-
Returns
Whether the pool is empty (i.e.: All autoptrs have been given out)
- -
-
- -

◆ uel_autopool_set_constructor()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_autopool_set_constructor (uel_autopool_t * pool,
uel_closure_t constructor 
)
-
- -

Sets the constructor closure of an autopool.

-

This closure is invoked when uel_autoptr_alloc() is called and takes a bare pointer to the object being alloc'ed as parameter.

-
See also
uel_autoptr_alloc()
-
Parameters
- - - -
poolThe autopool onto which to attach the constructor
constructorThe constructor closure
-
-
- -
-
- -

◆ uel_autopool_set_destructor()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_autopool_set_destructor (uel_autopool_t * pool,
uel_closure_t destructor 
)
-
- -

Sets the destructor closure of an autopool.

-

This closure is invoked when uel_autoptr_dealloc() is called and takes a bare pointer to the object being dealloc'ed as parameter.

-
See also
uel_autoptr_dealloc()
-
Parameters
- - - -
poolThe autopool onto which to attach the destructor
destructorThe destructor closure
-
-
- -
-
- -

◆ uel_autoptr_dealloc()

- -
-
- - - - - - - - -
void uel_autoptr_dealloc (uel_autoptr_t autoptr)
-
- -

Deallocates an automatic pointer.

-

When called, the destructor closure defined at the autopointer's source autopool is invoked. Afterwards, the autopointer is returned to its pool.

-
See also
uel_autopool_set_destructor()
-
Warning
The object must not be used after it's dealloc'ed.
- -
-
-
-
Automatic pointers are pointers wrapped by information of where they were issued.
Definition: automatic-pool.h:26
- - - - diff --git a/docs/html/automatic-pool_8h__incl.map b/docs/html/automatic-pool_8h__incl.map deleted file mode 100644 index f08d690..0000000 --- a/docs/html/automatic-pool_8h__incl.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/automatic-pool_8h__incl.md5 b/docs/html/automatic-pool_8h__incl.md5 deleted file mode 100644 index d99e40a..0000000 --- a/docs/html/automatic-pool_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -5680677957ec5d9de6f4454e1f430082 \ No newline at end of file diff --git a/docs/html/automatic-pool_8h__incl.png b/docs/html/automatic-pool_8h__incl.png deleted file mode 100644 index dd3999aad138d8530c33b2d8b1adf81a0a4d857b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11190 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⩔yG-|pjl@f>Q2AoeGM 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 BM{EE9 diff --git a/docs/html/automatic-pool_8h_source.html b/docs/html/automatic-pool_8h_source.html deleted file mode 100644 index 0d82fd4..0000000 --- a/docs/html/automatic-pool_8h_source.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/automatic-pool.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
automatic-pool.h
-
-
-Go to the documentation of this file.
1 
-
8 #ifndef UEL_AUTOMATIC_POOL_H
-
9 #define UEL_AUTOMATIC_POOL_H
-
10 
- -
12 #include "uevloop/utils/closure.h"
-
13 
-
14 struct uel_autopool;
-
15 
-
26 struct uel_autoptr {
-
27  void *object;
-
28  struct uel_autopool *source;
-
29 };
-
30 
-
34 typedef void ** uel_autoptr_t;
-
35 
- -
45 
-
50 typedef struct uel_autopool uel_autopool_t;
-
51 struct uel_autopool {
-
52  uel_objpool_t autoptr_pool;
-
53  uel_closure_t constructor;
-
54  uel_closure_t destructor;
-
55 };
-
56 
- -
71  uel_autopool_t *pool,
-
72  size_t size_log2n,
-
73  size_t item_size,
-
74  uint8_t *object_buffer,
-
75  struct uel_autoptr *autoptr_buffer,
-
76  void **queue_buffer
-
77 );
-
78 
-
90 uel_autoptr_t uel_autopool_alloc(uel_autopool_t *pool);
-
91 
-
92 
-
98 bool uel_autopool_is_empty(uel_autopool_t *pool);
-
99 
-
110 void uel_autopool_set_constructor(uel_autopool_t *pool, uel_closure_t constructor);
-
111 
-
122 void uel_autopool_set_destructor(uel_autopool_t *pool, uel_closure_t destructor);
-
123 
-
134 #define UEL_DECLARE_AUTOPOOL_BUFFERS(type, size_log2n, id) \
-
135  type id##_buffer[(1<<size_log2n)]; \
-
136  struct uel_autoptr id##_pool_buffer[1<<size_log2n]; \
-
137  void *id##_pool_queue_buffer[1<<size_log2n];
-
138 
-
146 #define UEL_AUTOPOOL_BUFFERS(id) \
-
147  (uint8_t *)&id##_buffer, id##_pool_buffer, id##_pool_queue_buffer
-
148 
-
159 #define UEL_AUTOPOOL_BUFFERS_IN(id, obj) \
-
160  (uint8_t *)&obj.id##_buffer, obj.id##_pool_buffer, \
-
161  obj.id##_pool_queue_buffer
-
162 
-
173 #define UEL_AUTOPOOL_BUFFERS_AT(id, obj) \
-
174  (uint8_t *)&obj->id##_buffer, obj->id##_pool_buffer, \
-
175  obj->id##_pool_queue_buffer
-
176 
-
177 #endif /* end of include guard: UEL_AUTOMATIC_POOL_H */
-
-
Automatic pointers are pointers wrapped by information of where they were issued.
Definition: automatic-pool.h:26
-
uel_autoptr_t uel_autopool_alloc(uel_autopool_t *pool)
Allocates an object and wrap it in a automatic pointer.
-
uel_objpool_t autoptr_pool
The object pool that holds autopointers.
Definition: automatic-pool.h:52
-
void ** uel_autoptr_t
Aliases uel_autoptr_t to void ** so it can be cast to pointers to other types.
Definition: automatic-pool.h:34
-
void uel_autopool_init(uel_autopool_t *pool, size_t size_log2n, size_t item_size, uint8_t *object_buffer, struct uel_autoptr *autoptr_buffer, void **queue_buffer)
Initialises an automatic pool.
-
Defines closures, objects that bind functions to creating and calling contexts.
-
void * object
A pointer to the wrapped object.
Definition: automatic-pool.h:27
-
void uel_autoptr_dealloc(uel_autoptr_t autoptr)
Deallocates an automatic pointer.
-
Defines object pools, arrays of pre-allocated objects for dynamic use.
-
void uel_autopool_set_constructor(uel_autopool_t *pool, uel_closure_t constructor)
Sets the constructor closure of an autopool.
-
struct uel_autopool * source
The pool where the autoptr object was issued.
Definition: automatic-pool.h:28
-
void uel_autopool_set_destructor(uel_autopool_t *pool, uel_closure_t destructor)
Sets the destructor closure of an autopool.
-
uel_closure_t destructor
The destructor closure.
Definition: automatic-pool.h:54
-
Automatic pools are wrappers to object pools. They manage the acquisition and release cycle from obje...
Definition: automatic-pool.h:51
-
uel_closure_t constructor
The constructor closure.
Definition: automatic-pool.h:53
-
bool uel_autopool_is_empty(uel_autopool_t *pool)
Checks if a pool is depleted.
- - - - diff --git a/docs/html/bc_s.png b/docs/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - - - - - - -µEvLoop: include/uevloop/utils/circular-queue.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
circular-queue.h File Reference
-
-
- -

Defines circular queues, fast and efficient FIFO data structures. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_cqueue_t
 Defines a circular queue of void pointers. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void uel_cqueue_init (uel_cqueue_t *queue, void **buffer, uintptr_t size_log2n)
 Initialised a circular queue object. More...
 
void uel_cqueue_clear (uel_cqueue_t *queue, bool clear_buffer)
 Empties a queue by resetting its tail and count values. More...
 
bool uel_cqueue_push (uel_cqueue_t *queue, void *element)
 Pushes an element into the queue. More...
 
void * uel_cqueue_pop (uel_cqueue_t *queue)
 Pops an element from the queue. More...
 
void * uel_cqueue_peek_tail (uel_cqueue_t *queue)
 Peeks the tail of the queue, where the oldest element is enqueued. This is the element that will be returned on the next pop operation. More...
 
void * uel_cqueue_peek_head (uel_cqueue_t *queue)
 Peeks the head of the queue, where the newest element is enqueued. This is the element that was enqueued on the last push operation. More...
 
bool uel_cqueue_is_full (uel_cqueue_t *queue)
 Checks if the queue is full. More...
 
bool uel_cqueue_is_empty (uel_cqueue_t *queue)
 Checks if the queue is empty. Use this before popping from the queue. More...
 
uintptr_t uel_cqueue_count (uel_cqueue_t *queue)
 Counts the number o elements in the queue. More...
 
-

Detailed Description

-

Defines circular queues, fast and efficient FIFO data structures.

-

Function Documentation

- -

◆ uel_cqueue_clear()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_cqueue_clear (uel_cqueue_t * queue,
bool clear_buffer 
)
-
- -

Empties a queue by resetting its tail and count values.

-
Parameters
- - - -
queueThe queue to be cleared.
clear_bufferIf this is set, completely de-initialises the queue.
-
-
- -
-
- -

◆ uel_cqueue_count()

- -
-
- - - - - - - - -
uintptr_t uel_cqueue_count (uel_cqueue_t * queue)
-
- -

Counts the number o elements in the queue.

-
Parameters
- - -
queueThe queue whoese elements should be counted
-
-
-
Returns
The number of enqueued elements
- -
-
- -

◆ uel_cqueue_init()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_cqueue_init (uel_cqueue_t * queue,
void ** buffer,
uintptr_t size_log2n 
)
-
- -

Initialised a circular queue object.

-
Parameters
- - - - -
queueThe queue object to be intialised
bufferAn array of void pointers that will be used to store the enqueued values.
size_log2nThe size of the queue in its log2 form.
-
-
- -
-
- -

◆ uel_cqueue_is_empty()

- -
-
- - - - - - - - -
bool uel_cqueue_is_empty (uel_cqueue_t * queue)
-
- -

Checks if the queue is empty. Use this before popping from the queue.

-
Parameters
- - -
queueThe queue to check
-
-
-
Returns
Whether the queue is empty or not
- -
-
- -

◆ uel_cqueue_is_full()

- -
-
- - - - - - - - -
bool uel_cqueue_is_full (uel_cqueue_t * queue)
-
- -

Checks if the queue is full.

-
Parameters
- - -
queueThe queue to check
-
-
-
Returns
Whether the queue is full or not
- -
-
- -

◆ uel_cqueue_peek_head()

- -
-
- - - - - - - - -
void* uel_cqueue_peek_head (uel_cqueue_t * queue)
-
- -

Peeks the head of the queue, where the newest element is enqueued. This is the element that was enqueued on the last push operation.

-
Parameters
- - -
queueThe queue to peek
-
-
-
Returns
The newest element in the queue if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_cqueue_peek_tail()

- -
-
- - - - - - - - -
void* uel_cqueue_peek_tail (uel_cqueue_t * queue)
-
- -

Peeks the tail of the queue, where the oldest element is enqueued. This is the element that will be returned on the next pop operation.

-
Parameters
- - -
queueThe queue to peek
-
-
-
Returns
The oldest element in the queue if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_cqueue_pop()

- -
-
- - - - - - - - -
void* uel_cqueue_pop (uel_cqueue_t * queue)
-
- -

Pops an element from the queue.

-
Parameters
- - -
queueThe queue from where to pop
-
-
-
Returns
The oldest element in the queue, if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_cqueue_push()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_cqueue_push (uel_cqueue_t * queue,
void * element 
)
-
- -

Pushes an element into the queue.

-
Parameters
- - - -
queueThe queue into which to push the element
elementThe element to be pushed into the queue
-
-
-
Returns
Whether the push operation was successfull
- -
-
-
- - - - diff --git a/docs/html/circular-queue_8h__dep__incl.map b/docs/html/circular-queue_8h__dep__incl.map deleted file mode 100644 index 1f3ac68..0000000 --- a/docs/html/circular-queue_8h__dep__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/html/circular-queue_8h__dep__incl.md5 b/docs/html/circular-queue_8h__dep__incl.md5 deleted file mode 100644 index d334ed8..0000000 --- a/docs/html/circular-queue_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -fb05972a720bacdc7cdf980c3c247cb5 \ No newline at end of file diff --git a/docs/html/circular-queue_8h__dep__incl.png b/docs/html/circular-queue_8h__dep__incl.png deleted file mode 100644 index 8945a16439b729bd1a8fcdbea2f20dbf9e4e79b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40688 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 diff --git a/docs/html/circular-queue_8h_source.html b/docs/html/circular-queue_8h_source.html deleted file mode 100644 index cd043aa..0000000 --- a/docs/html/circular-queue_8h_source.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/circular-queue.h Source File - - - - - - - - - - -
-
-
circular-queue.h
-
-
-Go to the documentation of this file.
1 
-
6 #ifndef UEL_CIRCULAR_QUEUE_H
-
7 #define UEL_CIRCULAR_QUEUE_H
-
8 
-
10 #include <stdint.h>
-
11 #include <stdbool.h>
-
13 
-
22 typedef struct uel_cqueue uel_cqueue_t;
-
23 struct uel_cqueue {
-
25  void **buffer;
-
27  uintptr_t size;
-
30  uintptr_t mask;
-
32  uintptr_t tail;
-
35  uintptr_t count;
-
36 };
-
37 
-
45 void uel_cqueue_init(uel_cqueue_t *queue, void **buffer, uintptr_t size_log2n);
-
46 
-
52 void uel_cqueue_clear(uel_cqueue_t *queue, bool clear_buffer);
-
53 
-
60 bool uel_cqueue_push(uel_cqueue_t *queue, void *element);
-
61 
-
67 void *uel_cqueue_pop(uel_cqueue_t *queue);
-
68 
-
75 void *uel_cqueue_peek_tail(uel_cqueue_t *queue);
-
76 
-
83 void *uel_cqueue_peek_head(uel_cqueue_t *queue);
-
84 
-
90 bool uel_cqueue_is_full(uel_cqueue_t *queue);
-
91 
-
97 bool uel_cqueue_is_empty(uel_cqueue_t *queue);
-
98 
-
104 uintptr_t uel_cqueue_count(uel_cqueue_t *queue);
-
105 
-
106 #endif /* UEL_CIRCULAR_QUEUE_H */
-
-
uintptr_t uel_cqueue_count(uel_cqueue_t *queue)
Counts the number o elements in the queue.
-
uintptr_t size
The size of the queue. Must be a power of two.
Definition: circular-queue.h:27
-
void * uel_cqueue_pop(uel_cqueue_t *queue)
Pops an element from the queue.
-
void uel_cqueue_clear(uel_cqueue_t *queue, bool clear_buffer)
Empties a queue by resetting its tail and count values.
-
Defines a circular queue of void pointers.
Definition: circular-queue.h:23
-
uintptr_t count
Definition: circular-queue.h:35
-
void * uel_cqueue_peek_tail(uel_cqueue_t *queue)
Peeks the tail of the queue, where the oldest element is enqueued. This is the element that will be r...
-
void * uel_cqueue_peek_head(uel_cqueue_t *queue)
Peeks the head of the queue, where the newest element is enqueued. This is the element that was enque...
-
bool uel_cqueue_is_empty(uel_cqueue_t *queue)
Checks if the queue is empty. Use this before popping from the queue.
-
void uel_cqueue_init(uel_cqueue_t *queue, void **buffer, uintptr_t size_log2n)
Initialised a circular queue object.
-
uintptr_t tail
The position that indicates where the oldest enqueued element is.
Definition: circular-queue.h:32
-
bool uel_cqueue_is_full(uel_cqueue_t *queue)
Checks if the queue is full.
-
uintptr_t mask
Definition: circular-queue.h:30
-
void ** buffer
The buffer that will contain the enqueued values.
Definition: circular-queue.h:25
-
bool uel_cqueue_push(uel_cqueue_t *queue, void *element)
Pushes an element into the queue.
- - - - diff --git a/docs/html/classes.html b/docs/html/classes.html deleted file mode 100644 index 069a01b..0000000 --- a/docs/html/classes.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -µEvLoop: Data Structure Index - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Data Structure Index
-
- - - - - diff --git a/docs/html/closed.png b/docs/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT diff --git a/docs/html/closure_8h.html b/docs/html/closure_8h.html deleted file mode 100644 index 3a5d7a1..0000000 --- a/docs/html/closure_8h.html +++ /dev/null @@ -1,254 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/closure.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
closure.h File Reference
-
-
- -

Defines closures, objects that bind functions to creating and calling contexts. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_closure_t
 Defines a closure, a tuple <function, context, destructor> More...
 
- - - - -

-Typedefs

typedef void *(* uel_closure_function_t) (void *context, void *params)
 Defines a closure function, suitable for being bound at a closure. More...
 
- - - - - - - - - - -

-Functions

uel_closure_t uel_closure_create (uel_closure_function_t function, void *context)
 Creates a new closure. More...
 
void * uel_closure_invoke (uel_closure_t *closure, void *params)
 Invokes a closure and returns whatever value it returned. More...
 
uel_closure_t uel_nop ()
 Returns a closure that does nothing. More...
 
-

Detailed Description

-

Defines closures, objects that bind functions to creating and calling contexts.

-

Typedef Documentation

- -

◆ uel_closure_function_t

- -
-
- - - - -
typedef void*(* uel_closure_function_t) (void *context, void *params)
-
- -

Defines a closure function, suitable for being bound at a closure.

-

Must take two pointers ar arguments, one for the context and one for closure parameters. Must return a void pointer.

- -
-
-

Function Documentation

- -

◆ uel_closure_create()

- -
-
- - - - - - - - - - - - - - - - - - -
uel_closure_t uel_closure_create (uel_closure_function_t function,
void * context 
)
-
- -

Creates a new closure.

-

Binds the tuple <function, context> and populates a new closure object with it. The object is returned by value.

Parameters
- - - -
functionThe function to be run on closure invokation.
contextThe creation context of the closure.
-
-
-
Returns
The closure object, by value.
- -
-
- -

◆ uel_closure_invoke()

- -
-
- - - - - - - - - - - - - - - - - - -
void* uel_closure_invoke (uel_closure_t * closure,
void * params 
)
-
- -

Invokes a closure and returns whatever value it returned.

-
Parameters
- - - -
closureThe closure reference to be invoked.
paramsThe parameters to be passed along during closure invokation.
-
-
-
Returns
This function returns whatever the closure function returned.
- -
-
- -

◆ uel_nop()

- -
-
- - - - - - - -
uel_closure_t uel_nop ()
-
- -

Returns a closure that does nothing.

-

The returned closure can be passed as parameters to functions that take closures as callbacks when the caller does not need to callback.

- -
-
-
- - - - diff --git a/docs/html/closure_8h__dep__incl.map b/docs/html/closure_8h__dep__incl.map deleted file mode 100644 index b787ac7..0000000 --- a/docs/html/closure_8h__dep__incl.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/docs/html/closure_8h__dep__incl.md5 b/docs/html/closure_8h__dep__incl.md5 deleted file mode 100644 index 067447e..0000000 --- a/docs/html/closure_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f30209a286066a15ec82429a4d63e3a0 \ No newline at end of file diff --git a/docs/html/closure_8h__dep__incl.png b/docs/html/closure_8h__dep__incl.png deleted file mode 100644 index 5e9ff1a4b446019e9f0e9d5350dc21a8f3c48f56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121647 zcmZ_02RPPk{62ik&K}uYBxILOMhMw^uWS(+nc1=>dnZbgQMT+E5|X_`Hrf0A+&#bF z`~KhKc;DmcA-8*czt{B{=Xrk4tCwmj@_5&&t|Jf#yoU<18VCehG6I3JhlK%;xF)BF z!#4~IC3#uI74pB_ukR8O2nNJMSt%{A%#G>iMz5DnC3glkHYR!6*t^-^GrVQ6{ZwH0 zBrQEHOJ{hfV(Inru7kIT{x9K+3eMi4;leIW?~h-iUCAHlzkYO|Y`of>!i>!9@Z^HG zkC}~~O^9>!>>zyK$@{T~kmyfJ(E zfB!mUitKvw|2!3*)9sY^|NiBtO3eHJetlZ?Ac{=i2g`~uGA^#mq4cZura8PzE&Bhw zy!+ASY!iK3I6=6=&5A>{Zia-642Mldc*-i%|32l;9fL1eiMLd%4tcs6%I$_(9S8ym zr4`84<5>RpazhAR4cYXV{-4XO4h{PM{H5QoZ%G`xlg>@khZodTR6LKrk#;ZrrK8av zs2#po$H8coKwh06DJK!~t>ft)NVPS~T{XfRPvrm4E$+YHoUFF|^-=#9T_^2Hujyq_ zW+sgTLH_77_bZ)`dVwJ!A^4+sApxfF4&veedl?f&@87>rENI=CZz~ahZNmHGC=S+b z`auivzXe}aA5}>*sB)ydyx0y{tQ<9I`>6kUC#C5e-OkRgZ}ZNbJ7ZN&)XALsLBej! zb8Q5YAqFK|`{m?!3_@_oxp*X%3N)0{_|Vytt|J%{d&-_ni}a=6#ZeVMAXUkcn4Z5Z zDJem|0U5VR^!R5R%jr7zc!is^{!?h1{D+EtmhR=Dz7DmPN_*uYild@B^Rvo zW!(R))6n|m@gf1IX(J6LK20+!f!K@w48b-lJ`}_~=b7l%R%yra3Ur^Nt&TGDw)pI9 zf5XY=XPeb6D|_WO19S~%TlJ%l7QNy6)U>rjOAML@9ypz zPayB~@@!jPU!O8EGBR~mRYBptmKLd)xVWfa!=sFQQUx03E8nxm$}KV9YTSkoo?4nj znVV|~_F7J}DRZ8cKrXez=%)vonwr%|+a=XA(zdp2zdjj9k=#--J3HL0Zcu&vm__31 z-0h=j6CEZ2UHjgEWSnJJ?DSuM2&Gf*{|Rk{Qo|Y-Mpy*~LM$HV88LyoccoYp^FDpT zfB5jBUcJYi^NWl5xw#jxWuC%gcBOT7RQme*UI!z(^9u{toSmIvp)zZY*^`)fd5N4G zb}2xPL9it${$5$J>`Uc^EiR!O7#t*8?27Axoxw-&q$wXS z#!2qX1rvCjdfmNyx4W;eoujnjTAmtKxn6XNi8ppnPfvW0RdvI(#nx19L}X-8Ru(OU z;k5*X5PqBQ&wQ?)V1~D$r1XZuvk`hm@q)Yz+hrwK_?<2 zD*ODoe(A98uNQn?`*MHAZYvHq0|y5V#5xJ9@}K?PwY9b8c^45a{*&Wlp0mP1+b7=j zYHVl-ujkL*y^OfIxfKdD5PyDMPUFMh9mmR0OnrCJf4d3?1qGFvwOm6(M?d&>2-&Vj zkFNCZV%zN@6wC#v)Qye%Lv9K(6Jq5K+NS1As_qiMlvOJpv9-6iXk}44wj3vm>S!I1 zyu!V8>zxX{BqY;fXUzH#@?v>;dFS>{ggm!sh)GCzA(L43>XY?2!&=Pl8ynNMTks-s zKYWNB7c9~78J@f|vHf{zWp}a5)8`8DqJQfWE&Sp#bX?H4vxG*TbGl+kCCe+l7){E zjB@+-ZQ8>5X-A)GZ!rYa39q?8%$=sI3xap5IgRrILd`~-B$SjdA=mhZ(W;#$!^$nY zq}fPk{(3|OV-hg&^OHdBI-U=wXGl_f3W@0fci7zDkJr)B!9#&tefka!@wT7VDKi zsWplX#UZzVvNrmNW3uKcvw@*u`Lk7xkA~Iw1Y$e)!zV{e3^64oC84Tf5Qy&+N}T*A zfs{ZMqazp}A18b%OIw&eZSN!KBNj!;Z_NOgZDL}Ag@aSS>Q?@AQEqHvVqx4Srz7$P z$K2Ldto!;e_Y)69D!&arvi!kEFZ>zI_k!D-TUc;4Jgc_qA-;L*)?y$gotaK(ecJo? zY(hdpW}6e0$d?>$PIg77LG^EL=c_cm7W{83;~mQMI31^Ii2gM?HSZC47P724j`KMX zELGhxtip{V=kEMsH~gu-L~?Vs@KFW>@k=O1jZdaaKYSqi{@ugHCD+aqI$?_M{Tu%U zatHzfaLTDfZqyX_=LH8>^1`rcocY9;0LFWV^zVx`^?VdU2>ITt?LGOgks^GrE{=ZD zNtaS7oTVgchPH)&-s$CDW#dW?>RP;CD%fmw?b!D;QU;6BljQ3fG4e&Y#HIm$7#c;y z!-X-;@6~0Rtv`Phzd6(f>teUbxPLu=FhnVZ{poK7xNRkw=e4*-pM;gKA+omY-JT+= z;P0(By2k%{t&}uV!eXLoti}2-$@v9~a7unAUZ)8c<#YjD4-a1lf>KqzT2~h9{`64& z&(``rY{ssivlTD0deGj!C0+cHr+ogm_rcH6;^xJtsf0bm?8ZtAb5s51#M0fl^8Yp2 zZU%D)4n)pCs7|rGrY6qewrWS5Bx`WTHMy9-ZGCA(slxokfq_g81WC9SVm7o^am)l#eak z|EVIu?N^s66M5hAFP5UCU9BE#o9!)|&Tno8rSUWK`ki96cVQY@zW=(w9dLp(yp$4nqyQ#jEYCLXY!x$`uac z$JEC_6X*MGpUFhB0#Eb{hMLWIqzfv}KSC)C(kKdpe3#CHuR$8)5G-h+t-dBET)_q< z!E*WGMl;tc4G1a?Fhk$mVAWg+&?UpizlMb-CM1MqW^?OB$sGb%k+De}211wlKeni_ z3hvzni_!1l)w$I_RLa+FTj~Afi!EbH^_yD#;AAqq z^o&Y1wm!*>(qZX5HJJj9{DKEj%hq_W754`E`wd9U!x@{hV~@hvK;xKT~=OuiQ}WGNg{EvuW3}{f`TBV zrj8;v^(BgpjYYgb!lBtlKU+sfSpX0w-m5GC9uWvKKy`w%z9jkbaTo|_USfZ{nT4MH zA*7+9DT8{@-qA5XRG`Gh#@4)E+7x?y?6omfOJegqQ_9VapNWZS=Nm_9b6eYD*qM&H zdf=#u58lbiiHnW& zV(1<}=3^r*Q7aOFKekVFWD16+TzocV*f25O?k_D^j53B)RFgON^pL5j+(QQC=g+i8 zMvn6vj+iz!hUpjzSgX7jdxsV(%`7d0vqU{x&3Mdulkbc*Jm;@+91r^TP0{!AWaaozejFhcRpgsDOf;e%(b&m# z3rDj7T|hHpc6MCK#vL0Dei{C-uN;+TE<4wP*{&1Ay6u_b%iD`tkAE>{aZG z7l@6?YJv%sTPVkKBv9LaFzh&qr8-jy*L{#vl$S6o&2qN#VvOv{Ys+7 zXg!3*SAyJEqPk0lv(jKRPehT+InZb(vXFJJRxTeBNk&tXzCK5 zsM1CKE(oz|T%ML&2C?ovo?O57-l5df%`I0gl5hy+e+pQZt=*t>k>leaXx%Y|g~?Sf z{;atx78DvQyxrP4Q!J<(?y~-@@AB+R=;zOOHa1Jcq#zq%-P3OK!3GrawGh+je<0Y{ zJSnTZdo?w3ahs!fTc_-;hTYDjvp(T<^0^)J8%)fG^IJ1ltt>QDAo_{DPoy94$r54iHT_5qM4W<8J{^Xe5bAWM%^3SdpLdU_NHvzdnH zW0el%R(zCG)6?~LlP_D_+9->4ro*+1w`2?qun)H$wQx5X$tp#W`ASSqw5_WzXRCbo zJQwQkr((6O2vK|VNSE92Q%a8(v`M}eZB0$3cbWvWv`(LJ@{Ei&04^W|1u<)C$J_e* z>9)4;39t7{PEHJcOANu)`VZS!HCNEgH=Qo6t|eS%7|)K4T`SR4~lC?F`_a#aEizy1E@d~7U5+lF9 z<*9vrg0=Q~^R3;?v8=XZEi@to)pd z(9Zt8)u+!P>Ka9)=H}*OW#*`j#|t>!ORfO9%v*xcv94cV`#S~*)~&X%5aWd~Tb+)R z(aeK?8}0|DKDy#`+U~Qh|Xy2X3_1wuF@v!g`Y*x#fwxcLPln0xT-Ig z9N3c9R806w3Es1FP$wj)$A*Pj3kV399#Ppl^oD0-h|4m`V}%~lUSmt>PN>~jUPgF& zVhRZ#42)7sV=(_mp@wYqrL&9k;%fQ2i80c+tNCuoY?cn&ej*4HqPdru*_R}p><0BE zLN*o)d)Ibd-lBGTNO?4@h;6Okv(wm@jY7cib+nUKl`fn{dJ1n zX}6r=Ley*t%Ew-w1d-8jhSk?IYx2ft8buFCh zPLxYGkEWp!gaC*~LHr+FLROH8EXtgRLQPk<3++BIGz20+0S!SR_=Ki2h8i=mCj?5q z#lhN$kjoqb?HUT&HL36y?~006>zuyid|F;z#U_gi%?Y@qR8dj!tQroEF1bS=Mb=?9 z_=duP;Bhl=)8%;c=xC+kk!F#=`%+zLRtIa7VaRrM(^4xga`Mr&wc9evpsu}lEN>`bgQOb^hH0NkftQ|s`Gz}ib83<`ci!Dkldi%h??hV z5LPHY7A`5jCSTu(?9{qWnLN+lV{vg+ zK@kjt2R=JzXR8=r|B4&-{Y>C#t>d2qRxh7=vyR9fuZ?n{v2na;JC6S-hu2o^3L>@b z4fHnOofb^5&B{?E?gn~&pN-UH)Uv0y7bhVh0a;HkPe+@ORe7??i9*zaGenwkXlN)t zAt5l0-$t5~tj$(Hx_G43RzQ{ZIzGOfwDdJ5X6C`Esc2eJkEv%LEy^j7Y&iLjVVUca zVuUQy>({T%2C~Jy)=R3J7k76C0xn4^D=Uw8+6a7Bu$kY6>!n8!&`wm|PNRy+#?Iw5 zPh@%Vsz(bJn@O6w{N>^x4X=koNjA_w){39ICFaXid#nTSv!K2C{GfE?u@kK2~S) zbz0-G)g9=|2M6p5H?J>8)N6g%aM?Fz*Oq4G4`8gTviSBrmLTs(o)c9>Z4led_WY7J z-M+Fju0GBO%)3Y1$LMhY=HKx%@VR0^%tm9j0q_V#<^;c-uvNj-ekaecJ3OV`vd z^sd9N+{(%uz(_hlH52`M1wpzCG-w|FM~~`|R#wKop&Wzfbb0J^{h4h>qpN zrHYd&BEXGh<#|oQ(shwYHS-r88WK!wHD+l4)MJn0OuFm(9LI`p#J$&NcI$(*MY(2< zemOKtDW{S*ZEj{W+p#GH8Z6PB#q=2>#cUNDvz0dH9*XQUnR_d0l=9W~a8pnv#4CECzc8Q^quMBX}Uid8;_ot^!CXOE-`5Xqk@Cr9@BMg4sn&Xo4)>ph>208KbEj~X zcK%8c5}j=A?L}7=ze^VjU+A6i^SobK^;2Ww;bpIk7~}_55hEy2(#uJUK=m$HMuOr=BXL>`3yP+-@7Q(lhV-%p#7?ON+tQ#VnKF15Uu z%fM@4@hME^$rEUxn`a{$KSp)P^}PkAH{SCDqbqjk`u65~E0a>e;Qh||vV_bA6r-&< z;cu50N3(`LSRwKLFM1!(^1Xo1i&yB|=1)pmp6el&Fs{=IU0dtKzxWGacW!g@nyIPV zkKgd!*;#klhJe7vUPJ{0?O&&fub0gqlwsA(tJ3+dbtCQUAeDP`#P};`Vv)#{F2kHO z6wr6?_=o8&#&}erLK0r5od|kU+$&gLvp=);Sp3mD{`+ueg@xFVwOYD@P>FjoM}Kxh zWe(B$Abm!8o}Ak)cDDtamlwr}F@d?=0xEIFz?tP^b!RH&JP?WZZ_>rJg-Ba=0eTSy zybW3LI;A%i6$!jaZ;Z?z?~1|u^4@5Jm52TcLBuz_$(a(4e`D~Bd{ywjTE6w7Kvn%r zyK$oQ*{?=plG86MZoFC5O!NgC-jDewTV#xa|Eb_ZFCnylj-<&DDcyZ! zoCT$H*-gn^-J!Uu?E?0PfhNg?0XlMUfpu%s2swz4BFt@k52r5&2 z;LCpNmf>Ma$i9e|*fm=oF>KaUsb!gmOD;}8TVxgdHA-i9o=6!^= zNJ4#_L@i7TD782_+EROmlQvKHyG7CD4K_y#7MvWtln>$|DBk2>Fp!B>;zai4B|yXV z5{tcY^vUM^h={_?Nc_j=$r5s~Rth)&u74;+hT%4M2=vO#}F-dn0!;mc;uZA=AF z8F_-pv|T10vm{*n>0Y>kwss7yPMjOit>g#y!sS(V4n0EOy{qNxoy_5Q4kgeU*AjKtIOiW=KT56xi zqSr$Sy~PQhJgKDpG-~U}n1CCYV@iauT=Cpu%~C-W{lq*xygoK57}z^9d#a+-B_|V% zC6a}=@6EOEO$T42^lY1j`whw5=eagN_Bd_5X5qh@PGPrs54VM17!cpqX+z$_Q`g3$#xD9 zWIPmorW$uR`t=I8PfoDY%wlvhC^Jc~-)(KX3d=tIv$9$weg6fGqsP@TThWN?j~`~J zX?^&v!t|^pI9yy*(G-I|EqdN{m^DVsOiUtAWC|9T`86RrZ(Kvo@OJdk){bSnb60m& zNW`9zwCX;aV`xlFURTxN@E3!7k&#n?Ncc}om2&7LC9D0XcTTOLmwqUwhE5vs?Hh)cR;nt*i}H2fuFZw4ZlZr$twCIp9{ibU}2U(Aqz|#dE*p~XuGq-PDOo zq^0lS(|(iH(Lo<`+SJkrQ0M1o#0B`IG3c|tH={kOtsQ~I>R9T%`~JNx0wE+a!65LH zWPaWxB4VebJE0Ma;ONbW0p@=Lu_?N&?=QkIZfFWy;>U^H^Gb%Uv5kW^<-l%}ITe!NDiAG0kiHde{D*!0RYz98H6s@nR*v7HSI(AkVvcE)X+VFobJOGbze`l0 zuu{axQN-v<{sj&5yy@zQjf^{Xv+}9f;TXAsGG|DOS^Lb_0n4Gc=6y~NA3o5l+2IEk zI5zRuW&aN~g~-pZ@>PaLoE<-lwoQ+m`<5#5MycoL=R?Ln=kxq0`v&)JipKZ?*qrfN z#H0~^g@dTpHeOj?e)0BgQ%ldwQ(dB=;n#|H|L!@&r#w+U@%mpcfNpSaibH&cVN7Nw z`+F_8P)8_LX1^8aqiI$rJ+@>5qJmNXX*W;$_zu=4Se!*OJeHQN2SOf#3Wx(kBp+?v2$Nl8X%#mWzoS-kf4+^Bc(5+7~@K_^We7lHypD8qGRM2pMFhTTOjFGVS$ptIls$ z2h`3t@yB%qs@S{$8M{!G{-v! zm5+->7keEmZu9Hwk&H4^sfjr`gpG~My%xK3UX9(;!&4unR8($gXezm!K0|?TxjO3% z#KKJM-w4XfQ2=7x2RSKDyehvp&cW`_>4>hXc{^5)$yD&9uKsw$+4j|~*NX1s>_&Pn zE`$ucyZt73^|M}!^5;7;*Y~~m9HhN!1R>XgYcKu`8j0<;>-G&8abe<+MYqV)i%&35 z3Q|2v6+I$>nFEhy4H14gDDn{ml19-iN(5NjlO=yE%WWr=;lqU#cxR>fGY}Lg?8|%;w9XJ+eaFm=4XO+QuU+8fmS*s?QP!S`e-QM_V0+xnBqDN#v@t`B#) z9_R5{ecqclM4V))cJ24>88!U<_AFD}Fy!}d3z#hWV#TnrKtzWyxgM~sq; zo@vU3(%#;}eEhu$*-s?y-n$pvwaCEPhch_n9}#=l1rs$w;svRkf>Q!ypuUwHUd06n zwxMSCv+>$PR!!a}4l+@`B>rSKCG=NuaSl0ap9eFZiJ-ExQ>ke%IpIXFsq5&(4QaTs zyjoI9&Ch={xn{T3*E2gy3qTg2Fr9!D^(ytZZ&nHqc~$L{9^RHR&qISo4bZ2M%5JL0 z3?P~`mvhVNFuIWIP0WDHG*pS|{pf9#h{t4{>f3Zc`roN*34E@}CkvaIhvMae0h&c~B~8 z#$!}MYEiBSL+M+*4#~9-k6MB$y)I9-5zjWx+LtPx9`6*3>(ExYt=KtE?C;^dYkw-_ z=;bZ4c)WYpudd7ZY>kDiS8PkyG%NODVr!Z2i6B%Ym^PU&_hI=SjA$aDYTOwbQcQTI z5&il#ai(Md4B1dXs)pU6h+%E-#DEs)!{hLa4U`)_&s*4(Zy_}*D%cZ}v;*MSzCjHu)&8y#1tLS7X&*HXb#A zY=KEfzqeLDY82<@k^!!w^_H3bs2FuhL*xJ|5VUg#oP@}P*IFUKrlFbey1rF?M_<9g zP8A;?A0v6yfQ%#PGtsovA((U&fp)`k%>%04VwYRfD=-s}OXX$0w*9plK}Yu;hQ8Oy zIFCtT9~ZmAK^f~hGrk+HV$+-{OwTM>eOk9_%9$+8siJ&tSgH~VC7(k4bQ>frkDBbR z#kumXg`F8692CUWnJJY{>E(d?4ILVMYGCt19vd-q*xu1{By|2>)LbT<+s_nfQhHmQ zo4y7`V9koo{F+9Ni}mUc<=IH>VIFJW-i`(Ueeqy4pgB*55*$dk$v7#7SN#kPzSOwn zk-k$Up959+_irr}p1=+Z@cA(EsD<3hp^1~Hrxkra!;QV_0N9Aj^pljmJ@(L0AEqWq zCM`=9usGbE(Ug&6WB1`BVA$0&(Z*tpl+zVV&5Fd>xsu;}`9i1rNkQF!{lUYB;vg`m z?sQL2qsW9u5|Z9*{gJo4Mya&T3=#*&cE@zV$Qr<=4ro-M;lHUFJNHdWR#exuxzy;g zD4$ze@_jTiIKuw6(KjR;7sg=*RyMkPBMLn|9cpX_FnDa+myd+XG*%usw^!SDaUF+6 z$X5s_oWO=rw4NB4O{&OU8h-2O_TN48F0O0mSDtou;(!0z^SD`~xn-F+xBnTW-d%_~ z0^R841)r99z~yxlKX>l88Y~8e?zGa>p!p6+23&JnkvmwUfT?vGN9p;y;p>d1rh;$Z zIwBC~M@>Cmi!t<~C7%{xTqNO#)_A(MN=K;)EIjd66G4nz_+ieeJ|~%6?0(A!ZB1U! zC(q&>*PnpaecUC9ztBcNzxl(_cY9_JCg2slj{>#X@rH(bUCxgmpI`cree0!0q{3LA zi1cP>rf@!tT}V<_qe2MRi;C>*Gfs_ze*U!hy)*)e1`<|8YAT|=10Ad@b99EriO;B! zc*Iq($BG@PQGC0xSMOj9##Gf!zQcOM=bG>1*t6xzL zTCljS`Mllw^W6G+rYWp~Bw25ZGmZOhq`v7~w=wS}*0i>iqTSrFdj;6_Hn2WvPg0Mm_oJGLf)cVQzC2}1s z)_%H(?W+mse46SdAzT!8-odfrdquE>L7pJI# zjvxCi%6Gnt5-hI1+ulrg>UZJJbkFhlC1nar!{7a9ElpQh5lg+u=L!c~D?YQa;=A!Z z^LG2?g`I*5SD0b}Mie^8yp{{?YMlCfWFYPg`dnx91EXL|2k>|l%HDlpm?=cl(+53W z3AD9 z%{0-tohOS>?nXu)^*y_*w6_6JGBs=*hOw}!?aJCXcn8g8=Gj>Ihky2BLVM;|6S^m9 z?e0icM6f0ptUP zhzJH$QMc^uA7%j7D|fSDilyt90?iij<>2mK^ZqI`&r^#(?%E*`vp?2jy8BC{Ei6#n ze#qqy^51w=ULIJp-RN>X-J9TFtkxSCd|~5!{Uwx}d&ktWwR@N7nWM=rTIwcd( zP-7tRiSy;p_^a(Iy~U2_WDp#F!VAr~Zse2**XunF#HF5qG;y5qG*MXv2^e7*{k&g;}Q6@STVd2P$f z2le5TCwCjKE@}KvmYCAh4PeNeH?n4K*(R^tr)FJeZ)Eg?RvV94+B*!U%21HMXWwZb z{~X%g_whxGSt~?ODjy53W?=~9z2u;II$5O0WJ(bP{LoP1-z%dYSg!z;nDM2-+akkL zAp%ocx(`JI!cYndn+w$ z{A&^Pk;SeiA7lP42M|A*0U#c4d|o^rZ6Z$9W<%jI4-F2+qw_Mmx%~a>-fGO~>2k(r zv(Nfo3ooCJP8Vu@*j+330ic~y=CK*9SGm?mH@S7+Tp-=$^8CieY))7(<}fTV47#r; zDWaw+ql=14$i>k`z9f<1HJ7%1H>{7%=$Ql6;ABtNWmy>|mVQ7+U7dDg6P-d*A_O~q zg4<^C40{NmGXDKIHO!Smf5$20|K6IlWZ!^Yf5kSN2HY!;c>` z1G`MfF&*}J;{P4A(=kUf_-)^_%3KC@!}yzY&tf`zn$7Kw9rRnLG@fh&eeLdMRKBaB z+o-no3?mb`n@l+0P8a<+XlxYxtccGxajjsX3a+ZywO(7-hWY$75`|oDUoD$KTl+;v zj6m9o#;P{iAh2>rJU;4KeAb_H83T3i>&y$1TfY`|<~e!Ims*%Ic`Y=tU# z;a|l|@W=6xI0EAqG@_3m6-h}`+v4H7QLP4Ma0?b-T;M)oczd$8?=d0E|I@ynmimot zuTQ9&^GllEfS82Bj)DN`mUkd=={YrTYxvCThfTK<*is2^->pPT;nIeAr2C&qLK2b} z=51p2`(B&xYA??B9&}r=hlF`se9u(ZtKq@8ynNQaF9%818pZ8T0H4g==tX=qwHUB2 zsxJln5hm6!CoLtqaThIL9y7PRoDv=Z7&o66z9prh!FaisW7U^I4t6;?^Zh@0U@-}3 z*+vS-{Fka3sS;>A(~E{RP!A^ zxXBPJ1LXWk(Xg;vwOu*bxwmbZ+E0OJyh<#cYk%1*75udibyJ{MR7c9v3986_mTVTJZ^F_>Sy ziY)Uv5(eVg_A5CK3UApnJ26K`ufAvFn(zK1trs_4WsQsohufQqQSLInJ%Yi^{8+gW zps9PXooEQK{sD=^>dO=+rlTYM;)#^wyPMTDheI|t6aic!apUvnBmYTe!sC1>8bJ7A zB0xm8ENshR4}(M`B!<@P>gJ%PXS)@8GcgVICONriNVpFp=xgTY$!@CYt#TNoz3hC+ z_HRGi;0*rwfr~6I(K~kQF;*t!{ey#rhH*~%{hNS|Xv9+Si?n(|9ui23QK6u`F_|b1 zENCic*{}XaZ3FuJ{Cc_P_Fk%honFe8r9e85_x|i|JIUhCTJf;Y z^AKYYK3djBd|Wp4=w|#pQRsX)zr&&l-Xul``)5bMRYo+RIwt1uxtF&(%`eY=pcf=0 zTAH-5vlO7M444LjArOWiK&+trv9Ug)`n9T<5E5UHG=9NNOcs7L1<#=MOz+C~7-%5j zmEmK$$Wi)g0Du%=u}+K{EL_HXm=F2Vt^?)(o+>MQYyrA9tHR#{+J>)+AR@cEeuxKe zt5Ql|iy`RRfQi7i6cYNJiL;M7FON<+Lbmr&V&Ho)27=7?wlH~afAt!CyI=B43bs}2 zH9cG%GIRgfUQODkI`XB(gG>e#IAYenSJvU(uEKWn? zSZ3LkNUOuUz7AKw<22C}pIU=2C1vc~a9Q27iIm)8>HPA^|yAYn{NQ&+Gg!GYHJzjE=GriybEzpzO z0sC!{YtBw6DRg&!9`KKO^X5)j<>u*HuFZGSg#`I3Pto`~YNUb_#l6)DHRE`#_}%=L zie_%TQl2f?cncSbOI7l~2MvUGZntZ3cP==Ab|$J6FCDNKbl9}zR$ks^x<^0HA_>=_ zE&%%O1V$?4#e@3j(H#(!nq>&mX3y&Rjs0IBOV&`eUb?-ZbOO-+?xj1*GEPbi#FTdU zuj=*!{c>v$YrlQ_0DujFunzsutzcSMbeQG;ob_#KeU+rf|64$rqZ3}^PUwF6M~xL^ z())m#zzxC+8Us>10iYsYCK#*<`Wkn`4lN(wx3iI-)ef6eb|x%b{Ck^ErU%S;m_)pp zkvQrFPVpFB;a2fqN^ZVElNd*J0lpqE=I*7HlrPbx+B;((g!v%c^hzxW$zC6QcUnFTCvZ7`eqz}?C-C(|5 zgaxbw8PvbKi!Ty7WAQf1?a2!?VnRY3&rcm#RWiGSvuNp|gtuo3s{@(N{BX7PBaI*3 zYqw(>?1vq(w5k@zF3t`Ft5r@D`}`ocg2S-XR90p!{Ea8j6d*`~*)yUL>?`KorOp4c_kZXLdAj4>aAFUbi9Lrf8EZwqW^LmDz6> zh4)wmfl6oi!V3Qt6O%8dlcrO%5w>}Doo3L-kJq8{OPBmoA0easX<%5{{r!{G2PAcX zhSEAX7`7TmN=+S6Zi(8m;^yO6zZoY>Cy|N%btd9rVwm~ihB_D}NiQxA08T~3N#0ZS z%a9BZsB+XF+nz;DzH>$e5{{^c*!bpIw$M{brIfAalf5fU$)?8f6s33kW*`Tb2Lw=o z54}Y~-*{ve#Nds|lt|F)f??zZx6?kXs@e?bIjHyRbK4RPyZCIAPP9j$1_Rgy<2oh@ zYskzY6Iw|8|p{XE+T z(3L^E5`YQU18s!(d+=jG;)(O|pB+Ko^{4J$@%a1l+;dEw+&lxE8%=dUX5#;x3esI zD#Wa|3od#T5>qq+k1{EcniUqBIC(3H^plUE1fCrhm=9#T**^JY29QAP(o1aXtDse` z7Oy(8uTgFmJ0hnD5Pi{d!^S7XW2T^1g0RnUrvw)ku&e}b0Xm(O6qD?Olgd!1OQ_=E z61j;|OB18F2d_i=?*G&zdgv*}OKTZrs2F*;aF`{z$CG=pNaf$c`v(mC$hcqjV3Y0!5_M`tl{Z0?5ly5o(M) z!gGt>6^mmtjyl*4F8s*D-I&RObBx~z2^lO-ix2kb?2r(=ZorBU266@<5-gmbSb+R` zpGo}%$m7s}EG)v9SXl`zJ8@}$jwrahD;m|PMS>6oPh#ZgHF^quyB9uNl#xDLyt+;? zR7-;Ibt{;I2Y`!z&uIeNw%l@5EK5Wqb-(S1J+1$hIJM+?d=Lm0b8Gf-;q-Jd^7JvZ zYEts1L;h=%Z3JU)*c6QD!y}bqD z@?(2{|9${SBnoM|JMGzfIu+@0VGOPKa7#QcOH?%<+)W_m%`c_An?Bs*Okj%#Ir<+L zNs5COiBx{Afo&T+g;1rP1FPWD(g-*b-Nu?E@w~sHM3Hwb)UL1|jE-3St1jvPO*bDt z3{_C93vyeD`~g4@4nlxT-2Jgi!2b1Y?w#U$RF7Z^E9L5n&5vI8Q5oZ2Mkw$O-hcjF z%1BLsS#tSf98oV?>q-$2_0+cgtvy+KwHzjSGUR0LWz>v2&jXxBQ zWrThGif9Y>;pfokXh+*W8q$%j>mO41RUzO3lA{2XTfp0Yw0LOx@(oi0o68?HjLWlG ztKZ8y%wWuk6C)0mr+Wzjn&jCF5`@>u(p58P&`^d$cXk46wJt_YbAZ9pcP{mA&kQbp zG&&InEB9DafHpzQ$D_(B``sZWB$VcoII+6D-1ib1J;qIF^p;(&F!7gn*|ngwu(-AZ z(((M|S@@AcQ}SUB%0T9AS*MarVZ!@TB#d9%{(4@lzUx9l)Ceq7PQ!addn<8U1mZf# z;7J9e_|w0?A0yc?M2?#7yAarK5Fwc)Bq$a;(V3ZAJ%4b$D;Zf!$To?EXCR%=(8>e^ z9l*@i+ki;azMqFZtMlg??#flqw)r6;CwkjL4-B(a)3<3g& zToR<9-5C}R-4-djM#K@wS^bW0Jiqp<7)USltoT&D2*6vgE*LR#1W@{c(jhGc$i=(a z-Zmk_^81s6q|?HLTv_s^0)SFIcj4)V2K)0B$sQ!Zj_)-@G8`}#bVO4U1$%t^bQc_y z3!&tVT?I->aM(J0cg*tXFFK7F+VKUXRS~WycJo@k#<4oW4+-LOP-> z%WVf!{Ra`xb59oIl;8;TSHhPxaDFBc3x_&YbN15>+OOEXDXMTbSh;qw%X_QVIai|y zNmV^1csPzPjvPN49Eby(6|%}()Dk60bquch#z%z_itL|7JqbXhbdJHlFx!1Wa7Ik!Kuen$c?TH zeTy%?Xhh^DE7@Fk0!^mab4t+TTwE(U+FvdUp7bQP%`Gn4Z<-rCdS1(7%OMLg4aj9K z?v-7~yDc?GGiu7IgwiopJ-Pq?4uZH<+FvQ&A8(K=mBWQYS0MnXj6C3R41@2Z8N&2* zb9C>oMB7aP6i96|2t9xI@+=DDQEsl*2O_dVLEp1YKA7I_i264m74#I-O9DRr*{$k} zQ!XR6HkgpZfqCl2i^E#~yCtQP9GtIVfS3<48-;~W1}R9_yfL2deQ|ftm4}J9904Od z9`VBo)tGF)$1VYvH-CFn62!_#iy;Mp?QgU0NT+-E{o%2(=zMuMIOvq(0@?MYYK_PK zCn1;x!)|M~0(p?M^+A9o5AaeXv%G6Us@@BL!*HSzc=r8%ww_#;Bz8C;@?Bv3dp8>l zGXJ=I5oTpY09*H)55|!JFFWLPy=P7vRBae)cOpAB|G<>e$U_}1@KZovA_H{_=>z~W zEdGmb$T$fKn*L`AX^o*%I(zUt%E(IE_yMbTNBuo5bca zlvjoe*n%#NJVA@>fE4%oNJ<-AJ)0s-s0CPVk;@d1@ZZ?`$1%Y~>iJkK1Q+f3^Sj3@ zk^%5<5Ew}t88OT}w+XByZ-+h8>oS3@3{-Vc)?C`#anW;BFLb)+o;n4*g)9cO6hc?|?oiFs7QaJVSC}jw zZV1QG`zy!+z9_9FcC~o;(%%*YWdE>yxM8u2F zHY@jfF8{nr)Qr&oEEfOjFS?1zUS7dS;#Pdfx3eS4v1)EK!6yxJ@NZUtxGeXjZ$ei? zBkcWqtE~`%gamqZlkcCj(xp^O$!8CLFh?Zs|9#AUdA`SIVUb!^P5)B6SecPoMoItL zD?KJG|AWKLTT=~`F>`Z*5iyU#qm`*Cs18HR%Q0|qL#lO%qdKIle#?i1e(lH-Ek8cy z#Tgn}_%XbWjv5?krE#?NRuGku25fK8vo3RF7274RZZe3A6F5zLk-NIQ`Xx^#qJ_@K z=ky1^+Q9K1=GA#3g1fY<<~cuAmPlo2(g?%YWZc|1S}M5ynd168w#?5HV`Tk!zG>weHRt6G@=uFg6_xq_?5%(XJ;COZl`(4b4P0JCX zWwAvDH3g6w8GQ=wFP!@=fRB&weMkIS@Xchbpq#e_ejNwv-1Ccjq}bT{@hQ%6yq2fU z-S6q;;alw_AnPn8L#_~ITw#fP_3|F0OVl<49i-qNJ#7lEm zA7=6AuOiORiN82;w3NgNSVde9!`GgV%J$BYSZeKE=jAf?4%*nbMnSO;jjqky>_^JJ z$^wzHH5VC|Sk&>c^2Ur)%)`VGhd-00oScU;nxAh~Ib}>)o%IcH2ZnXZZOlp< z=+Ov?o-O=cVxtkWje1FfIYj$P&3l TPuLz6ES{$G^w3*xX_Jp5?s{*to?27xXsBD9v8Ey16-DuEJ1Vbl$6i0 zu1Ct5&2fnNB!?Vs7MNKVVsjKrQHbfKy|d5$^0uMD;)(g+xj70_@|3)Q0CWn zTZYH7lZTIkIj+{714Bh+=Fj+NRF%v!=U3^{=g}Ptxw@s5W94lhde#{q<@nRQdQ}3L zWP^2@+n6n~^;bzC7%?R7IcG>aG)KeR<|L5X4M;!>}ca{AktN{9a3+-6a6sV3js z?NQ{ny-o$N3FteSS;Mf^)iHjKa1cL&z-o-L8zi3js?>FQkg|LJoR5r) z2Gz!9IN7UNg;)u#CF<|rNFu6Jvdc^Lh=^kZW!gO+K8^6uP_oYGRUBU4d0&m348ss= zK@(=49XQP?34$w{w|7%ZyDaKr=Yjmncc)eS1cvmHm4VqyQ!7#Ifov8=xRA&<>^G!F zMzoiD?Xr5m>0x1c!7=1EB9gX{*jT3J?<3F-)8BS6#+|^JWNZ3Ye7x-gPrWZbXNM%w z(MC^?KJlOK+f6WiAmxuc@`u8td0b%D7nC=gt^S5R|fV{_SnyyU6v~-A#jDQ}o()A;qK?ZO{nT`D8C{ z_h=U7&qy&2K7EzL)!y2wwf*cB)>aK&_U z>#lU&+V%d~tTh^+RPA(qDFxNJpfD8{r!E<|^$?2t;Gds4OJ+!_{bvi)^w` zFfh#RpJB`cTrVQncG79qj=Vgs;IMvrI2HEuQ4g)yvAe@cItQ%@9;-fh#2-$e^yiOl zPhY+>1Q2hsSh!hADv{3@r4@E?KWDj|`5mm@9ZvT`^}AtHdKCVAb37Z+EhhHzk#6{9 zeG$Y-S%p)C{jno=&a)lb4eEz!cjxmM={l;O9!tH95EFH^j?7iG5d3<*;c{_I$z|k0 zf`;bf^n2iOz-iQq#o5^cz_DcF;xy8lRgBlyUUwks$+_#h{yX?qaI(|dU!dOjF5VWG znwmL^Lg#z6o}u9*ORt-|U17b;i>LcuQ>_;yq4;{;*H>esc`9)uWQdC*6ZV;(#D2jS z1)c%KMGz$ZvITzsoZ2{{`2)FY>1hGVHt&A zpxudfDvIK#%Hs6Xz(O@`?K_AA(bc6zB_Vp3QSo{rzL^z5s3o`-{n|S$^^i5u&_I@x zbA6my&N(hX_2)NH*T^n8;wiwVmCSWm*a4Cf8_Q!dC2JN!Eo%x+6Uv3|{@v8q%cziayiMHu{fHrkwmtUUJ0Wm{LCII245>XL zaM@sxbGNKnbYv6vJiKLW919Tw1v6Y1Xwh_~rD(ufCvNIye9N-$?0#v29d%t8d*8gr zVSQ94Vn-uQ6}}y~3eZYQs?)Ks{JUAQ_mrIzh|4r;qYA0DxysIG34_D_A=}{rJjh*B zQ@HpvrM(XAu2yv`k3V`4L_|IKHEcoeFJSjhj3ukA{>$8pbTwHY;JkO z6?e?nhSQS8pQ4wS3#w`cML|r+X}l!+=d?abEw8{V^Q0Pm_1pKLyu6svn62TF8$1XU zklIQne>1YQKK4(a<9(b_%BWF2OYq;-nrl{v6CX?C(=l1002eUY_v-hJ31yLapP;YL zpdszHX`2scXvvn{N09@9rlw-V z)B7~8=wA5H>f-i{-^{;@lZD)@MX@HA_nq)+A}$JKS>7TC95R=iJ9GMo0ApYf0awcH z`L6mScqLK|G&R}FjeP>1_wUe)h@gjtZt6FUYZO`tN5qcw6g|OT+NBNAEtBW9OXUVX zBbf}}yWS;*g+vYuzFpN8k1+6K`{931uUo0o#p**6b=7gmbD}zf68Idma-{vvE_5E_ z+=V;g_-D`=?kjO5Ni^_jr)7^Q_L_r(Ar@px>frcPS1#_-VBUM#8CVT5r@PVlAoWNX zk{q)8me|9Yndm4%Z9|@1O?)Yhm35NH;2?H-&i!z*T-De%(K2|lVyx1wj24j?T%P4t zSto>d5I?)wA6;MS_JFvqR~&N6`2GH?$Fu`q>kGuR11;YPIY^rIMcsu{OF_!RZTZcT z0&yeqwKVpq`(qdSA^$P07OAWv4}5cQ7~(d7u7F4={1LA{$uSEi| zQ^yC{zRG9Mfu-g{?{UOI9E8sKd_zl)jQl89?0!y0n;%bqot@CYXg!+ejU);hS~DS4 z3vz0zMCz4?V$5s^tWt|_s{&i-#2UomzE!q=2P%te^~r~Bt1=M%PY*^o8{mb=SEG&? zN@K<7mFxNNfgi4~GwbTxsLQwiUJD9+KU~QyEp_x|r8`yB)xA|(7MoQXb=&WTd42v_ zU0X99BKEV9LkB{?={+z=y zSx`Wp6Z>t^*r<>!xGnto^S`C7W-@E**Dhi5+VoI9OqA}UgmrgLl(l!ydLzxz*A_w@ zChnKi z6Nsl#?Pio6;d_(k1VR&iw5itgXQX9RPL7s`mlTL-Pk^=H52cU!*=xqa;txC?mz({g z_4BQqp>6NY9^wkP?~qsOQ+ap}TU9-$Aa67urDOg(W%kp&|C6DwFQ%=Xy8o9;EZDQ( z)nST%){;!OCZvrT2*RtL|E#i^B+90y(AC$ENaA@yKtmH7hQG4EihCC{UsvZ>Vq&Fj zzO(}a7}uX@Q2hqJu=n(Yqti1o-hyBD?nCjxCr+j+d4eM-9)$j}wt}yQsRAH^*r?`ToS)Ze1k1~vUa&5G z&mH0AU60vc@d77D-uVj&&qJWIb{qWlAX1Q#d(N21Bh=OM=KP-9?A3)FFzHZ@TTWF9 zLsLkJy!#I~5cv3eqdW1x22j6WUFX-V&vx zA9p|@8%jik9pCF0q?R^uW*PDaMK%}7@$u2&ck#_3iTx-dP*8rvkB9=B4Dh#S>TY*U zo{&F`(&&b)Oje?2Yp&VFc8=mLJS^Q%bx)KDlpJgU+l}b-;zGzd7*#VRIGEyLRB|jF zgvKvSWFVn4 z9URzHt+aY2#Z)~%p}X%we12rpn9)Ql^-4zF0lnP#St$HwgTD z=pQ6`=)=QxeJzFrNs5`B1Q|DX9Hm%Zqx9)_$%wZ~kRYHN)b9j*=4Vk>Hn)n2B6x9R zMVl$5-ue4W7yvdafHRbHr@iaBBQqX6wAwKyfb4aQ3NAWSX+r8mn?*?i{Qtlz45Otr zGt1BK&E?q|Y7|+vZiNrRP!q}EurHIqzOAjT5;Rg)JDaPDxOuH!4vYZ12nxzo!p#wN zw>PY~0^h*X)682D0=C_0EmL`zOgO3(L%bV)jUJDs22~X08(VHRn47m&s5#R7e zEMHYD;@dax4@S!0W+l#2_m1CX5RSJBcQr=r=a9Ds*)4c#MSd}!O>>a|<-Jd8Ln z@Z)B>HUmarJrp(g&z}pG8vH>4^ugob3xE;p%H6fX>4JN66*0*KAJ_KADI)>G5T2D~ znf*BR>wr?nj29uK7y$_hVp>{lqttgagTCipz~(&||M|!4<)4^n%8HzpkE-tas50Xn z^S-DoYE&4ktPVs(-W9Gsh{x6h3caNrUvw50FM1A+z<2Kw;3dQX_+SICtQXSar9VfY zQ?=`b1f=S99v=h4ME9^g**&4}s519sfu!*`-4jPpP!W+*?(Mlwwa%pCkTSicfZs|; zp5p(W(J%MU>8n>L;I0w|fx=2ea_+?oCdZ8*vMxKbB)YmgN~+9Xn2jfj;_eTBbm}%P(vpmBLLDUXUOoTFEf z8mWn0Y*=reRndMoP4HPr^pJ-9!|QNn6&!kQwO3ylFl3;E5Dd!!=`Jy(=MAr4vIBeq zW=4Bz%F+a`#86^Gm1kyIsP=XL=g($29UVL&hlgXYy^ZM@$Iv7tBS))p@B7}QGbMRY z2X%IQOX+sn%@6=%HD3FVoKUC8B0jCQoUZO21gcbEfolGI%*H4Q5?o|rb!zv&7=d|z zfK&PX*2zv;=igtRvcEXj;7UJES&nIR9x+|)$awo!KNgqr+m=yf(&WbGCMe9~aOWk# zR}x~Xh=_%iN_l)j*wo|&Ow_8KgX0&HpHkf!_c?MjEFHo1L zWM$`b92V?rhVg97a{@X#^khY-cF+NeY4C8m_2R{}>E`(Jfp3=&-Ie6;c^?0L`!y-) zKMrZ*5A>KA(!DD$kvTKW+dm}#Ng9iVu|GkB3d|k|;cC%a?|bghA4+R~yOSe`dz0bt5n8*8(ZAuvMInHnkd>N2E`7KD&hVIn!3kk1_ZyBofomKn^+Q z=-eC)0hy4nisnf^PQJu@wR!YFRf3x~_nnsRsj4f>=+1AC5f9@2vE7jRhuhD>@U-@h zo&`^o^@77NpZAr4JmQ1*^vGA51%aHyOKj3OCLsov!(D0avbN6fq}&LY70f!ulxsi#)#wO?M(ur zBPvJ>-esD|!dIduqde&^GgN~|jaSf(cr!cwCt>i2`VUFn#mVFEU9#8+sJPuvyLJl# zCVf1j1_|o6y1a5nqN0v=JSt|4PY^?F12(P?w$ByV5i?>4ywd*Wt%&6;)Y{M>{QJ)z zv-Qzzm#`mPs8^S#bFsho3pK?Eh!dg?*4CE({%S;2pmW)nL^ADo@B^D$$J;{d-1zm{p^3QO?n=woh5)?j%4AztfY8@D! z7xe3E=-P+8R8q#deLXygZCE?nx}Tie+Ff? z%fOc}*(yog$q#Hu+I+7J*8Uh67=TBj#Npu~9U~)(ot+(2?}ajJLav+I;(pgu)fOXY zL7o2P<=p<$%}BK39t4AfgYQ0k2+YW!F>dkD+-{P8Nk~X*`r>y4wHU%`*mAbLJ+w}? zyOw@Zq;dFcL$uxZiWxAV;6k>m6Z}`NQW0n$bU|Fgy6zGYi!J}i3qc?pcz6Yxx_vof zOgVTEp(-t69~}R!3Qd}nN){OlIuyN-`XTw@_&w>g;`5bj=yX)n#ZX_B(aY4(;m4vU z^DZH2Yl|{+***xx`;)$8d@macS;PbX@L@R{Al6%xNh^D1VlG<`{iyTKMZvEa;b{Bq z+hZUn-xYZEZIOg09o)L%`vhcV(J?VI%P15Y&ZA*{p(8NF#-KK4LI9PHl$dRC-)$umM&bt8YC`kJ=LYZLps*V=wl3E9*V5JNFfSTBQiYg_nWH@N^Eoa(C zSVS@y0n5u;*57lSwPR^G3xm+**zv;T+?DQeGyTTR%RM0dSuo-`*u8SA*SyLqynApk z0*+(xq@Y|FUY@wPc!Lx^8L$6qXXlmc%cCtlETrBS{6+EcMD~6B(f^kVfQ59l)Ey?e ztzvAP0X}wru0JLwKD?C$f2jyI2mbWzz+&fLWhE~bQbKzA(6f`V0`=KHwt{IN-oMYz z$<1x7dZetZ1ty`jG!@(z)pd3GRMgb$5jkw|LD@Mtw7?2kCu5;MmX;k!TTAPX`x`L+ zy6vy5u3q7K7CY$)uFDC=-EBZ3g&(OnInyLk*jQiJ07KHEeTRPsBjMrUP+Jq7TvB%R z_lMm{T#Xr8g+Gj8Th>OSU zIHnR=(LTD+A6p1cno*=qZ!hc)>n=8^i9FP2KsEOCq+wB)j6%m>Ui|Zb_G@A^aWV27 zqDuMkkKomaB>0;ABp|H91GI5DeCHyXo|U!#$}dgO4he~wnHjJ zk25(1cd^Lq5W>vc=pkuYS(3Tzy?8>#amVFgiE^ViF+*t;->LC5@t-vfEN=dMNhVZI z3m7S$`$=knD5>BlAEs?a>Lxe4Fdh@E5~Dt`dkix7g9Zj-dHI~=-iT1v+l!cu7tXtc zjhh3$Q0cUylbqZD_nPX~t*?MT-V=3;&ljtCmG|irs$g1lEUnap)s>*#bk?We3w)PP zpWe*JbF#5z6&4o$*ag$h#v46t?cld>F1Y=SM<9g2d6(e|_p_*I)AW8sV0R ziHQjY=_nZ)8Ofrq94Dd6dQkKsfi0c2HOGlN;!j`J-n&^+l)E{w$;!&o*gZf&B7A=? zBnH0=0}rncE`gb;slR6K!|aBJhWQIZZRlw_I%9{1e*t%rw{%P|h>eW6=$U)d9*m_T zHxAz@lpiD}yn7b{Kv!p%InrFVHor?DmZO;ST3QIh^c{XMn*@VtWO&~cz~>L)i)ugDq}-p%Yli%Hdz+A! zHg9_REyMe*-HdO4tZ7q2JEGMQ=zOhYb@ecAvOxPvdom7Ja8yW(FTqXr0lyCKm5s>;^3^^OK9Yq5c$p zCfJz<;NWfi*k28vN4IV5V&ih=AN=1fkXIl#ttwXA`2hKsBcMEfH`M+=OMI%#L-=B7 z(lH->nQ#gF$sp{tvKQ|cP{?#zk+3Wg5r^)4>1`}51M zrVbAHFpEQ8US3*8CR>YiW;#Z1?AjL^UxKiVNH1T$#3ASZ)Hex16df!sLGcK^Qas3q zoM1A8C=a?nxZXYoSK;;fRxxg)27h?2p)6~ZSzG)2H_EWyJ{#-^XMgcp=TubSBT}T) z)Eu9S2)?n3!UQ z@ZPSjz8K;66_GMAF@d~6S|ha?N+u;Gup^BwwB=BNk87z9V>)Vw^yWd49H^ zI+A(7XEAIAZ3n#kdzvIMTi2xv(|j79zMg5i>NTn{}TNZPP{N#XgslT=sq)k zSQ@fI|Mu1U#AD*Id}@?1xuw2nsjN@q;XChApBWqT)j6~WV3RWNxs{4?8|fq64moxS zQ@CW3l+4&6NKMGfq^-ze!-5XuRLus(bbV5A#jbf2S*Ib?fGPjyGrJ~0IS;M0s+W<> zbJ^pTmmaE9GnwFvLeu1)lqW`&Fn;RHgt;;`G>ZvjaC3V;~? z^(V3rLSo=+5G!cz?Z1h*XIP%Anl=FZdZ%&W@Xg&URFuO6$AiReEWA$uRRIH?X=4X#g4UDvj=ohg-HKxb+eqA_GLb1EH3e!BwG8oJi`%s| zHQ-zEld0;(t5<=YrgSi%WZIR2(!nnEpZD9%Dt%xklHw%d5|1OcF!Uu(-*8UzE^mF;C%JC2>05&NJG{#(nMU7Fz7|C2u zgE0X_8BAaSTXcrwZR~)^udV?_1xkBpGFJVmU1J5|qvL;Xu@@E3$iQ27IspJ!vgi>R z5QRE>Be9{jl5tlW%3sbu=EK1~p%W9My>%;Q>T~ahH3!Grn$E2DsTA$KDoCJjg(W}& zLeukOTM1P33V-N}HFYysN|&3=BS35D>%mBms2z>Xo^Q5D8RCz6)<(`CFdcZF>_m(e zP=kMd5ENqTcwv@V0G&FmzoS;m!0Df^y=HpE_Cm?<7eC_fyrUod$&Kh{^GNt!5*{D3 z0*Zu(kME_VRFfn2=@sbXg4mzLm|l7M0mZ9ldxkT+Of|w;sNT5Ma|v+mn=_yP0UYGy zai3&*phKFbu0FDg`?gRQ(xjaocT@9aG#G1x$k9S^S1o@k$M1}KXt_>W`s@#0v=s}V zZXZ0L~JRY(Ud6uwHk;C;NmZjr}$9M(rs3iI z1~)r$--|NrIkSDP*U@+GF|)H%($hPf6&t?~mgj`Cl9B(I97nOgO22u678r8Uh|fw+ ze$*X;jqSKLEcPwk3vHo2X^i?q2mN-1qbJaCh;HN1Joe-wL|z_Fcdx9M3W0vdGL)wv z&|5VWh9sAS+o}M22%eRpLb1U+=z7zpdd0grD#fJbq7 zInNc@XB(?2R1(Q#p)nyflR7vuSqT3cqCSw9&jPRmM(5}jS7m2q`9p=aGXi{2h|_OC z{@b=&{l5VdgL7f<1!2pGoiBDRW$l z5zsBaPdH`#w1tD0mtb{u)z$cBw$XX2(V3NBK!DGA^)W<)6{%iE0Re&Rii%jMv{oS1 z1b_yd3jPFte^$rvxHt2#-k{!WVq+_!tez=>G#e z9ChE?eBCC${XY-4u-`Q;blwpCQ4OtPPb|Hh&zTk9DTVC)bJ*gOlEAEtQ`qa6>%`|- z+UESp#Kgqu@irxdj}Ry+5wnoM*eIc{)$@qscy}QdkeKz&%`WJ^L2d{Gk6?j`kWo-L znS*R1s>>%A03z92?!^XsPI`c}01jzz-!+b2^Y}Z(2UQJ}jWApb4J^(T-Q3*LhpV|O z8)#x>b<~r< zsj|QSTo8J{bV5l?`e}m|Cj$>^`H&oeiD$demVUuoATm9f`O~EWJ8Qygw|LK4Y(jfy zJ~|}ZY#~)I2O|()+$UA3sHiM^b>!reK9}I!(*4MW2AsjEsc0=tr+l?^tODTM&e1=> z=H%oABrRfxxA+Jk4`nT_4}&8k1#A&Hh&c4d!^1J@=KR3_77Ck?P`&aDN>=h?7WcCz z*DW?U;MOonYW4{7V>YC57*W;G{=E8EJd`KI)YPiXOiUU`g(I0#&Pl*v)I=)$`}eQ) zN(K8oB!tS!$`KJUG3Bofsi~@ zKSodEIM~^3KKs-$d0oWCr_VV7WFiI_JUec*RMD?$b!b&I7Y37FbJIJmC0(&6tvXhZFUTm<)LgfY(V+om zG-lm=y0wo@ADLd=$6vcb1p4rp%W6K0U(_R z)ri^ef%lf+*`HqjJ}z$Mx*duWB!8IBv9k*U3vq!+1~a~bFPi^1L?!n3?-zgtDm{9n zGhJU?%yDu90M+caFV0p`^ykm~Ev>Df7qiBpxDQo6p2tq?7cldM76o`wKSXBP00J)6?$~69Lfe02mqc_LMC*H8uAkuakN7DEvYUhNbO% zrUiWT+f_S&Y5;`NGc)UKxJ#LkMn?;Xh>!!CoFIwrTexu`t&sORTa}oYm^bB{!ANyE z;>sNzFhCn}IO7T(vO;e$nYSswkbp+BGE;BfB)7zgg|+Rp8IJ;elqg1T zVNM9S$S$^cCE+2SdC5y5;ORYCwC4Da>QkP)Kh!CMKUpp!tD{qXj2r&yE*Tk&I*VkP zgS#V^ot=G)k&*HD>MAl45iv160|R2dr3R7CMrKIJZFpf2k7sEq*N*RhI8A+ZbxBQh zX{l{Gm?~CEJ38`aNcvy_v>!$B0IRo`*hI9rm|fw1G;M8szM4dYq)!t)VA0=(&_}6B zOwP|Jt}f36V7v~(D<3EYC{%dpFh3C`vUj;0F?B~-$Y09jNr&IU$^Q@A!PQI>wrRcw zya2q(_7RyESINe~Vt@1@J^+q@tP~!Jr>(dyveM9;$Y>(O6_4E6a0Ts+q>!Zbr^Hej zm!uFxn#po@gy`VbEuQ~Y{mt2NgZCRuEUdQf>2tP6+z({`XW4nlZY0?pirn&={#*3$ z;<;AJNFdEmOg9F3N78xdT5pn0P1A(s=Oe3qOlEd;4ZXa~=M|<2%0Rvn`<(GS2zIqj#gW!KThTaGm7K4v9XFyPJ9^>UT7*RD)EVl zuu;T}52HF@>eKu5^k@iIFxakK(+8xU zZm^+|Ad(W?Z0O?V;0QNVv058uN7PHuXU-PmYCD9uwQ@BBIYW*890g*cM!kbco?T5% zjpOP!a=;egkl(hMC@reFoIGiT0bmcKDMFZ45)u6nD6<`1T!M>=*qdB!rd$qO!>fz8 zb}b~lj)Nh;fmv0EQCBdZuCu!vMaX`(aDNIsmAYXlAnXm2o}M0DVSNLG3C|4NH`J(q z;C{5D($FmF*I43A*T#Jk`-m3z-U`t?2Tp!Io6fM9fvTAC0FbgWEwN(Q8GPjTJ2wVtYpyR@vRGLCkp6pKzXhJ_|u|k&!4cOaI3RYZsMnfD2TcbIc0!0BWj!N@h ztj8JRjXwmN-L?@Q0MP`rx4+K(qtm+U-?`mD3suTz5&bVT4B0Zng|8t*#>Q{%Ys&pF1)@jmUm#+iia9ao#? z6BZ7y!*!IwufNDdKI@fj@v|upD5u^PulV!{2O5On#NhAm{|8ye?>D6Tj<5d#k|c}( zOzGvctrwI!5Udbsg;ql2YQ$`o$jIjq8eGC;?}PIp0@0~i$DtX?Ea>>M!2pyl1PwQs zKfA}27Zi3VHa1%rhFGqugb&glEuX@GEEE>HfuNnW5O}DHln@XPmCpu>vFgr;R{nL2he{9BpgW z-llv|wQ5P5W~j4WQCZ7(S(?4Q0?ho*IM#3s+-Ev7#m!$>89SdqQUe)}Jj4g6{fUx4 zX+0&!o~fJbD1FKb9&r?Kddq$HgR!z|xKXaW zvoqk*H8sK}le*_mfw&5^mF}Umqs+p9LKuY_{-l6vZ&QZ?m~V)Bknzjc`Y^y)yf1X4 ztj1y(;o+I1-@pCi8mnM$PZ%EP^0B5sfws2Qvx@`X34Tp2v6*=e6#epy2o8l_1$XzS zM`5NmUQ|ik_k!bz$gy8Ut)3IHoJUlsv^JEjI_ zE(k!MLFVye7(`g21oRqIjsK~#t(!=-w3ZuuyqN#~4SoOVj!d&&h4FiOtRtB7_TX@P z=Go%(Cde|Nv)UDe?gTKwBrqVcY_>WbUpGNR2M|rU`yX1oy0Lu@7G7<-J!$ARowAV!t*9(uanGhXySnm0$#dwDDXca+(SDo~FDMU(p5$Vt0*l+dBC zQBk>w5OE&v7_H>dE#uD?`}hzl56sZeWI`)mx0YBvlm=g$OPgNqqQSo#%1XMh5qlhI-=4L zb{UANXpaX{`AYvTv_PphH|GdR>L@^3@DRboxnBj;3w`~|8I_Ic+Ls!-<-XR>0_i-` z(q`;_uacOJ(|!Bx#P#dO{m>HR=Z^q!JII@IqBEMW`qkTo zm6>?)!d);vVMbOq$12R3geabor{Ykmo%HTqnG#*st;d|4GZg0LwG|hq`zxOPCnXS9 z05p_;{Fvfnx@r|LBHl)PP;0NXikQrx+e8=>%4F{db%G)R-ea=+N|+#W86qQhAd@n_ z8-_R6xie?WFW-)7J7pR`%A*B;|0xiqdM5Fe!m)s152uJEk~9;cIjedRZdOel3C;M5 zn)qlj_aA1qrAW}C*+$YxIIoKZC=uXa>3Vxtzs0UBwg?w$I)m9-8=lG+;iP!fpZ{!` z&-wa}0RLSI4QD+7)D<}@q~wq-@Exqa0X&|}QTT{5a=!c-`|^rJ=TiKAb<-PGmWf-- z%Mx@f6S!rD?!kqYV!UL;LOw*jw}R-A@d{8)+D_pbT>W|`FV95BDg8~PO}@Hl-0^!! zYO!lPG&!)PtM4%Xc}1f|Fkawe1U!3KO8^3&K67tRgT}gn(d*ZEh)4)BG4C{O4iG0n z>luce-+{Vks>UjCRN^WP6eB_oZRIP|I7mdcc41~0#|z(!f4*mlT(_1l)@f2RGY3AeIvPRy8tJWxPrphz|IJ1$zN|1Q=md7V&15R3 zf)*x{=i$2l_0=CjA|lm0Dyp9hg`R>@X-DVM{lgZIF?0}hvW?>;!W5XH_ z?@gM^%_pBvv0?ovw)5V&b4^2C)3qy)@DHt9{4xV1eKv)9k`T+N4M_qJC&5(N@v4c@ z#P^Yk>J>72*x2bIJ3czTTG)F{sV2D`1^B7WO-cd(<N{6Kng^A!06n7G{vs&IU(xz&p<3Qwf!5){p`i!R3Vka+x!$-<< z&0vzBIy#sj+2A9F=Ds70t+VSYQ*YKy?BS)@HRF}tF-*p83yfIPsmd}Wj<&lvWTPm6 zTO%4!s{r*SM+&(9CDZ;C9mb^DN|1G=*bDAQsN)@VVPRJ}gwfC8t{ zaeF#abldM+vLqygAsG^4(vM4zGyLFbxXXfLJ5V&v0a*f~-wKO~gLA&T^UUG{(1&kT z+owx`?sjQsc%k~cU~uCZ(hCdH#f>qhCOJa55s83U_W4gKo? z3KJr0xuwt>17{jVBW zQLP}vCgLQDii|FQ*`BUBZAyJmCgtW@Y?kl*S;Et}_T`ncWy-wA*2Kd8jKeeQ$CvR5 zIxVD-7n?s9*gSIA)7lJPTuk7-|JQJZR01F(Z5^@P!u9r$cFHYK8pv76EdoknB9twlp^hsf<4QfKHXicng$;04J3zM& zH1t5k`_BNBXt}VzS>@dLV$FAz)JLEhor9U2hQBCDW>GZ-=N-(G>87Tr6dt0TQTF#+ zAWOGeG&8|6De$H=I=UT)v|eHS*IiU=1^o|{V$7vaSJ0usA?)dbHeEwlo+9;Q>;REM zb%!|w0T{-_>Ib5dxc%kc1=zCE8t$M@BmkJeV9#->3mGE9(;;I@MWDxTO{C; z5@>&MV^Zia=8vEQ_gM7=_&6l<^O4sAHG0WCeXlx39fgollH?Q>q4Gk-f)*Tf-~sGm zWE*(2&f-S+0+LBnAQuh}rY~-{zPq$LBU8{E9iI(G5U}(Ik%D9pB73jnsqw80Esav+ z?MRpgaC$Lm^O;WTdAOx76nFdAJ}fb`^=l=cejKcQ;pO`kIXi2PdRqijRcqtw0;lxZ zR@f~RLGukQ9#CI*!=C2k2*SwG&sy-jv8atdd`eCUyc!LSb^n=qy;>zLb^!r==)i#* zJumdr9TYfzh)%f)OM-ud8D;x?3qpRdauA>BfuKSGL*gf%UM?F}nxLw!i>5xfRx~)R z;Dh?K`wE$jg(VP_NA#SWm>_h9In-cO;J5TGMMOjU@7r{-pscbh(pN*Gm>}k3V=ro} z6#qXRN`#>GS@YoX&fEj0B6$Mji0LEtSX-@P~l3CrhWKc=Jjtt1trnBcq}{cwRh?>{qOB zX!z!dAA~ZXA)J#E6595kXacymKm}RHD;W0n$y_>Fm;irzV5>$Zhl1T6$;kWtKG+%L^l$CfW(Er61y)2`E+6>A%1g&n_!F&Gb}ZV8AIX z`eL>-E70)z&zs!Xv3dug;Na5#j2#FGZ>0@&#Im@b{JxJ27eIIOC?4ny?Ki$;AWC#}6YR}X!T#RbY@55nj1eeg2dZ{_T3`RL z{=c5?+oan0`Kf@(v6#f9A-J@l+F$~CGCrW|h|an!2&574Ix>pMlHcFCH%8xPZqWDi zBDFb;RB||foe+EuA8QE##F6J zT6a+!WD?lpKk;)43z1!2ao`cnGHKsw@bzK*_|YDY$&AJm%Bb$JBq;dnhzH8bUYhRC zZ$W22Dv9TWzc%-Un;TzXkO>_d8%fwa8Uq!G{9Hn+R??R z@5i%P%;BQaQcyZKYv}0AtZy$!j_K<^?jKG!K(0RAA1h#BDPC9LNEA_ z;2#FmkI~Vz`~s1S8;u`W6FYv6k9Q7kGKfp;K3`~4n5vWs+D2h^d2_~p7Z1;Ds$n0Q zM#>ke+`h%%j~J8F)D_x&=M25)B|KeTY&jnt+X)^Xsdsj-a3j%QUY#&}6gI#DT=`?K)7{ob zX&4_4fH?^}+vXN!WyLN92&T!w)I7L&Q~LB=vhz!v=8?*zfr`F9hP8DNIP*FV3=Z-h z!Mr}FDDqtYmtVEBas{wzYjHq)S8JRMARLUaL1E5Y_@!%^wHC5E8`IySE z{(J=#jD=+{JNh2p?T@+FU;4DW@gIttnHjmQ9nbR_L8;$sNq{KvVPO7>`kw1`SV^RV$C^j%Xs z3G9Q_=<@b5y^3M|Hg9AwOmP)zK}cCtb_|MpuPE!w75EJ{Gle#JGJJQg7_lAxd1Yi!<*F1x-V^s>^-RN&1Z+ zaGI)uf`iF`j)Hkb^#TwX$zkEuN>8{Fban5fi(wnTw=mYz(TPkG zy6HXHst*nh9&K$VvY)RB`0!&SQ|NSVDD7tXXp2kVaKwH?ZZ|H^5%nuENg@nb3>qCJ zLqiW^My#@@rzBX>XliMNJFn@Qo$eXKIv2s=G-^2|D^OPi3wN^3O*u1rNn%h%ElxxI zXT7=j$CVZx4>dO@hh(nlQRj@8PIa|$afwZe0ZT77kUY^PB-U7V$I8<&aBx}8;o?v! z9|@oZb(#1*gX=fl{*i@>G7XutBy!*@XYbCOC>7_2XGTWAdqjaM6p9@7saC@R-{Tjq zuJ?9k-$Z6*c?5^DWYr~t8$X(ip&{n$9-mysT*=Z;iH* z5r>OQ3?u*R8Ffl$f>LOiCEjxe&@Cj+W-&kKHTBah(inOfi+yEHMr{#aYf!!LjhU{rY?zJxqlB1WQNbswdA zhPSl#xM2Cm+Xt;{BV&+^Q8u|H^ffw{oEG~7S%rOe4m7yG$i^ooI!7HDbSpB@L_~HZ z6hSvnb&2eCf(DC=0XGtOESLuou&`T5WrR>{uhJ4`yc$6f^4E)OC6ZcWW_FrJ8gS{*8* zXhHPq8ySPflPt`@NpLWEetqc&-IW-XBra%F%D6L?D`*n+MPJq~CR5qjPMI`z}mmHdH~we*POgz0Or72`}s>!c;5E*pAH>ued+EpHlJ&9 zPUe4!q?XRVn${JOk`m(R6y6tt9ZN_59XO#+fP<^;ve`2ic*c4&BryIc|ByR{YD{g&__*N`#+s!c+?w&_yW-9mUf5;!SG z%hK-8y>G}!pCj(+VWQ`-7Ms&No&FM65AGni^76Jz7wMt5znAFILh*YSE_HOSViE*P z%YZmmhn0;nB4JVPl1u_k!>|4^!+a16L6d-sd~lmlL6eOC1u66%OkdnD%EM82bfT5$sfPu0qL!Qd zI9QV7hH#;vp&<^UdSI=Ds7H|Bqlgf zaRTGWXs%D6`=+6nefaPhE?=xl((=31)UW^)FKI1=z^}k&H{JL#HZa1| z`?G|y!PAXf=nasn!2B#g%-!wXEquY^vX|1Z<4nxGjvF7CCleXy40aJQt#*^^?>1@2 ztT((V7%V#4+Ct|~+4=aeQ&SbIyz245@${h_|M10W6~Rj1Rd|V>5D25%?)jY3&)?iv zb&O6ILxI*kjC`PO%Dw*u8hN(1-c_%nDe$QDza0cAL-GKc#E_XcIo0_%;-QCgY9zFh8 z0c~*XNVhI+Yz`YVXnH=1!~k=(cPLGeD+Tj`qbdH>l;v_KieYfbQ#l=1Iz&qFixy}PD{#>A={MxbSyLy)qF2=jlJB*6gjU7(DTv9v^nQudGvCg=G|zxRH7~@PoFAKsVT(PJ5=Aw`uX+7 zPm)WNJoqLD+ix&f>*DKL95)Yu5$Y+5MUOn+$*@3m#@RB z!T4P!8ymz)0_kxFt&rYk^X^^%9bk+aRWx=gEMUaLy3?YkWTEGKGbQA#riH=A0;W^!hu7(*qhj_WAH= zC)PH~*5l%wVdNJXq@SjT>+=BSvVa%ELwBxxXwr2|9P=Bu{6B2HWmJ`G)HRGsgAyW* zbazP!2na|?Do7(p2uPQdG$IWWN+TswA|TzN2uPQ(>F#d6wa+u2@x5cb@6W?I2ll@2 z>sm3_Tys9@9LQlydgy`Tx`7#3=VbvF_OXkyJu`_p_7U&jD}eZrtk(09nHec>NX1#> zosgZ3p_+!~69%WauzO915qq_)E!#-KeLv(^9L6J^B;061R52hLnIdmd_ql)5Bfk70 z-Qz7rlV7o#?mJBh4?}F8tE=C3Icz0`r||Ee@@k|^snoM)AXjuPWo5-EE&UC`_ER^8 ztlRe`ynyS7{8ZAK<)@7*9?2hvWxdX{aE%axMIOR0u;qWGLRSzL_Pg2@T}?%Wii5MS z86io`#l`ecEI&T^1+1c6@S1keGBCcHKd>@IMYElIFO}2M!Z$W<(EP6&dG4ijk^~nP zM4JcpCzG1(-&~aK%;Q?l{pL)$0~cMmzFFtizQHF zV)R5L@=;;Cbxxap*#usnSVBdPzgjjO9RG>S}}P6UB8AjQ$#62uJa z#){}4CoJdMt^f-Q;|Q5Y!NTI*K$L|1{fqjq{ybqz7?t9O9XGc2=sh4PbT0LfJX*5f zseFI;+@zoG6_~P-!3S~fG${-WRK}&AE*y?x=1&NHprG(8=+gx4#ct=rq~wADs%2(i zl=BF>bbcUN-8m5G48*!zi5z;FE^!Z}$yidvj!}Sp1*QHi$cQ^2i#VZ+{!rZ1exd93 z6U9no`;dfmBzSY!Ib7Jcvz%VT1CCB^%4yAg{0R*tRF~)@BMrtpq{3eA3IWZ77JUPy zKJ|DFUIlG2^h!LQ4~{pSx@XY|NdQj_TBnQojvCSXvfLqA#FYqv+t&IZ}y?D9$zgNF8 zNfQ1m?ix1Iuuj%Xf`0lUh=YUgdc0Iyy}EQu5?seT+NzIi|Ij%1k`gBERYYg-#=SfWk!~MrR>V zo1cQ-o=)iu^%I4PPROub8H67!ts>g?msd|t%A&VeZi0~j+7p!?`k=bgv4vlkpr{mp zlsh?hr9*yYI2_n|RlRr`GR(MoQVmF}0KID&#Mq`cA%!<{tn&Y#!%T#Aeoi-)X_ z3Q51H#)CKjD|x|XW$e=pJ;CV+QCu=Qc{hgKXWFAJ?TqBt7fv{YgfGW_s^5~6i-QrC zqMJbO!b1E^lw>ioMJ>0$3#kXNhsC)W%zcc_oS}|u-#Ic20x5|+F}6N}crqmf4t7}Q z(dG^KJLt0TF4m0~6`!TC?-&{wd;rxuI`}o2nOM-W7*G6=Lhi0qRuXD&&pg5ZM+X%O zR7ER@MzOlO=TdUPLtG{wq06`ROq_EP zp*K1)jI|HH6-WBLD5s?1MvxgAF2N-Le$V}xKFN~#&B@E6A_7Ho4uT?0U0pQKb8DR% zt)O-EkH5RGDYW*Emy4uwN=p-yBra(psiT@ED)@JHX5WC@;YVh4SSrF!OFITrIUfj) zGZ!8o&Zf#WH1|u5{q7=Gil_)!p0iw|2Yw=abA1>AY;aM|j8ugT=(ER4;U{BGPb zBcQ6k1%CyG<{2D_A(oK7GntX|tOxcBdab zj`_IrUp2jno$oz(%R~rSzD+&inIiD1YI5QW(@c>8Hw@u9C|6!Z1yy z1%53}4c?HE=kbwcJiGRTrtWUay}dehejt021Ca4|=pi;Otw~^rUGsE(4QMflqs;8i z$XJuEJo;u!pEZ5MnF@6Vm$|xyYKp;!iP1!#~7V;Yhr}xZ) zGY+zghd*w6_TZ!Cr%x03Fejzu*f6Te#teVe&1Agt*YE^!T|7V)WK8dI+6&bzX>;=~ zbPKu2C*$h652V+q4RD46Vl|45b|$&?;?^P{`|mby~Qf=;&O45AZxq z6OgWTr4z_q#JeywEvTs>_PxA^>UQk;cbE#E(}=ZmHIA%0Fy{%5HmZZ+K-_-%6y5eJ zA!rir4-L%>QcN!x5-kh+v0r2_3x|GwIKqei)(_O{?q95a1qEVoxn`Ek!xZAq2B{Qi zU@jBn@9%hWUXmjg)&!ympeAwMG&xBLEjhA2=!ZT890@RcQ}u#i33Cwo4o0zBcFa4G zotNj856f%5u)cr)LQPvTysOLBmX%iKH3tDF@+(3s(>m=VF^bFf?Dv22)_RK3ulNg?Qunj(w=N+h>{`0dhl!SA4rTBu};R z4x37>Ev^GQq_RDm00;3`h3qjvms2)k~qTO#l4YhnCU=~_ho<3~I=z=-fsB!}2e zKfDX6&)%(3$&Dx>G)grDpcZu8Xxl*t_xU)E=6h>vq$lUw#-L+IINy1kBX;LqNiuXv z&CuOBKv+V*vmxd7#fXiI3xw*fAYK6ku5sAi;huxS3VU})KA^gCOb>^Jgi8l`#T*?| z$^UIb56EG3<)XGa#A=F6mFzS$#7;|;L4fMFv{u3NgibR`Q)?rbU32-!Nno&UCg7~j@`Nl9SmAfDyqRX`o)!Mp`xGNN8ExmN zLDh}O9~`Fw?GIKokY)1Puwj02agG>aKQ_b#lfyMDum+8QBUm&4W4zpARZZiJDl5yD zf}9RI(7~HGU+!)h+^Munhew2BgdqyC2icprdzOGP>c3hdCO{x_mB*t%+1uScskzS% z*j;neQl->6dA^(+b)LtJq!g-hT0=*2c{?5LIW0{yxJ=3`^5$#=J!~v2tzq{N*v_g= zkT>-7{{e@DG$COP6k5=saD&i-OPwBKqo~ZSaqxM@0zzDAd9D9&p?GGV5HShYH>td* zvCf@@!jP$xB)sv*sUllpBhLRLd*0m1E+))kkztcwL4g+vV*utzpshlNO+{kj*OsGC zQJGcc`l)hy06}O?;>EU=xC7ZCN#n(f0DAcrV`HAOp1}p3SAA*LKfOfmym^zW&mXWR zzq)#=)9?=sw41@oyxItFM29 zy>Q%F{sszYI-o-gJ6Wb~J+s}c#)6R?blO8hcW9aONJmTTS~6wMq7#-PUfDJImdCqp zVh6teMf9)EYQLK#H6`UGDOt6&!m8WPpGnbpsBQm&ERb}S64QdeJ5mEg(hL>0j^oDB zrYux)w~Y`LaP>f~4g;THH;l1!$@~_^(YuHUruz>|WufZ;u(@S$UxG@lrbJ`W67V>!mDhv+~WOaDq61bO}-wr7)#cydny*`Zl413}?02S#h(5zC|dW?Q} zk_s_4DM`5lt}C?oiO44d{}>F7zq|XtY%#^cdVr~+zL$$);!nW5!vZJtS6qxvx!mok zTBSiM42!;wrhZ;Zj5{k1i(5L#(@-}?=6mHqwLVfn%kc;O_ix+nZz+4W39*1cEG&MU zJ3A~XkM|M0RRD<4HeK2Co>B~ zZZa{wfq_C@69*>^TzW%w?ap`5+CTqh9}wK378o?XGeqd%!^Ajz|LfOV1cb4Vpg$-F zcoH@{=7w0OjSOW3?4WFhxnnR~8TDtfYn;2}a2cTGX&FAe17OH%%D7x#31 zebw88EF8)ysam1B!iLF?vpkGL96%PD&&IaG#JEY{&*m7Hc%@VV&u3~7UPXM=(`+h57$r{ur9Gt@-5Jys7ZL|VuFd5>YzP@sF@{4z%#e&R& zu!Ed;6Mt^J<-9K~r_8L9@DX}KsQH(?<$2^dsmA5bmoF28pBACWDXlze|0FmFG7`AD zd8plqwczplDCyJJxg`|}sKUjj%94%{962&@K4k27mY6J9y-lGA>+iRlS$s7; zm(?9;4Ab4ViHhm5x>GusEi@mle+FIE2-D4VD37#;{wt3@5T_#Ru$xt>{H$jx_HoFf zn|Ge(`}Z(>^4C2_Qs!AM&}s){vHWXDeFAUS^d%pehQ{XX9H9!t^jpYV-Wt+4qDLpY z?-3OqF08D~G!JvWv=kR&>h#{&Ges1LXrCN*j9K0uU)}CbP{|OK2Xy~WPoK1mDGMNt zmOXpfJ3GFa#Xgv;t7uT1-F4j>nuFs(ElK>cpUwj69$<0t;}duM%NRS|$Ac$~2as9- z+~Ok)M)zKjlthAQfVp8}>WnTyC>yS?6{xG%p51OdoSAjN!yy*NvJt-p;X9){k^5um z_Zm!?v|C!@wnk8lkn%l_+|p^|25!xJXxZcNY6Ku+V&LEiy1(rJ`Nnu??=hg7^pEL( zJT`Vh%NbFJvHuC)W7f}~{>#{9z85;7-@ef$ct_ITQflL7WL};*J9M`h=flX#Ixt`} zYS3zd&J#{H&{}T*u4LK0R}VoFAPuOiFaQJh-`O!DsakqI3VmVC*=UYuX6EzKvgDp2 zjB5;(dQiwZeqx_{ps2KlU;r=})^8 z6>TP$qAINGVIIf>wS&o6siCs?1EFIasJb(XC5RFd{#7uygb7(GRS`=PIpf;-dga$gSzTBf4Z71M4#I{6m94?E4o6_7LWSa+fe` zObL_+09s#L(|s%td){G9G4VvLU!M&En~0>n-7G{{YNu#=AOx=(maju09^(}03f?O* z^lpn|re29``Oz6A`ADHah=D<8|MU|s2SJ3Q!Y?GQ{q381zo?Am@m4o1Z{J?-D+x}~ zpDY|M_fJRMwX~vY1)=b!B0ar~>{f5FLBYlGa)Cc-o9|%E-O}A%Co8MDzDBCkIE_I_ zxM_d!^G0CcPtzmPW-4TWD)u2A9%%NSrhpVVchc!*=m}YcQjtoerKoWCKK6n3%@@_asPfDfASvfh;o>s2K)nScN@V~mhe!BkHYl+SrhGFp{-QyX+6?NC zy3XOIopeCpyXoep+0_+V&dS?}3cKq3-Q*vQ{3cFgjLN$%AUc z6GkMNVt1Np;lTQ5&OX-BJEx=1eusRkkag$;1a1IK;w*3V91;lh7d$?7bls5(5Qx)( zX)wDsY%x}s+%T?K^`^e#>XNp!%IMvAdB|YwtS8KYbbjtopPWnjefWT7D;uhZ97#b{ zEbPdD3%wo^BQSd zi3ADA5BNj}H=UM*>3DfRZ0YESz$s25p!n>c%pcV>e)_<5b0E0!TC}Tszn6rktq;_8 z-tXir(zvNGSlS6+}g||7HdVa~Xs| zT~Q864aMs+_T#gzCc@n~)6N!J?rRF$@{ce@EVCL!1DCB}_Jo1Qvh`pNV=^=}1mY|> zMS^*{^Xq$GWT48Ex6Ho>`Lfa-OHWo-5H2f^!%N?9I=n$D3Rs4FMURgC(Vl{z%N=#~ zNdR*3YfLLX0iHxhSDB&7tnepwonPQCq8~r7tw-Ejfm{J06%y^|=Y0aA_B2GNr#Zr|He>~bk7@YJ@saP`fsXL{ z9N`7+#%vYhXWk<>>tEe&a>f~qFdOJZ1|?&A^mNI%mT48JA>N0EYO86Ag|3gLxAr@b z-Mq!w577z25(liLBmG^na&sdAVzk=S6@*hrOE-6KN*(hKxj;UK>&9Q?FlBCT0BQ;z ztKB&VB$6d9jXtIRscr3l(yNdCg*)oPqHn7|+JOyiqxC2w{F3IWsrXm-*7ULg4tV~Y z1l(4d$I48(Qc`eXy^6)wLzj(r_wLdkkuVIrSY#gw6E}&rHr+%?2?;9L>fC9(?vanW zONzmpELZm4qK4B`sEVPa#$rJzs&K^_8D*6JjYeV#Xnr(eW~N9ko7(NqB!f@chC zbO1g7qlR-(=DsTo-_s@|N01PX>fF_(8Gt8Wd@gHXLyq=8qy)R!1Oj>c532x>D8*A$ zDnx!!DZocTPav|XDbHE{GzSPo@Y-Jve7V6P&IJXO-4tXas zyFo$nd-tgE*Z-jRpct+MU7|nW(zY*j>7mIL742M0q*qQA%^&WB>7eoC17C=dnBLxd zep1oiryB3!_L%mN+X2W{tinIz?)Uxs%{SBk{6X2ZsjKTAObEKF4waz;KGlO6#?#a= zP_H_V0d;B^UC%CZx{c za08PT!iG;DrGNYZR69w0@&<^=`Xwfc9BmET9^wic($Ul3v9O@06syE-Xo$+pcA}(~ zSQw!CkOu(y1tZ^{p!px+K%jXV_mB$${C^K%xNI@v<{P@Y^bYfKH%EQc=G>6OnCq*l z*;S8ph)E$X>r4?a(FQ?2di}=xst}W~aEQaD02jG0dG*LGUJe%Y!%bS>mR;b`@|8YD zK>_CK?D8=wG)(g+HaT;1j!DTLk6ygEFCse zS@pfmiT977;Q#k;Yk=xKGt^9V?9iqY6C3jIIm#j$rjY&hg9qhkFW)7fC<4s`4egcw zxzu|EXy7$Nvkc`8l!7TxCWb&4PYHAJGH*|q)r7$*7RXjjFD4Z(#b{~0&Jk10hVY;9 zRWy3BlMzr2l&0?W8$cOok7b+}nLaw&^n=6|R9;T-`0+|LgN)4GQukd2m>7Z*CL_@1 zvl!*A!B6eK0r0(ha_%R@mR4ovqcwmN04?GE`bdxQuU*XPz1{iIn^W?Ufz7>d?sMsv zg4G}HRGH;qts9Ac_4gYI3H%@&dkhRc2vp|@BIbQ4nV;Vp*X$PI28WnS z3*=$F)rd~1Fp;e+5)Xl2(F*M>%z@1Rz#$+bLqoD6rqszp-z)gTe7z&eVl&bn4mZ9# zT&#lWdRutc(vg+ttC|FYW?fvrM~(>PCoiXC=!Npr#EbHQr7@V03C`Qt`65n{8n@7G z@`?>SJND*F3^x^ek{m+67Mk*0l7h4hHp;2VeAJHvqOS(E#Wr^Gj~|D{CZtJYVZ9&l z>2Mr~2}(RRwYk4Q;8QXyt5H2wv?nJpXmT(u2;q}-k2)QOWwyCMv@z9_oO%Am z*XMHeuT*kuEV+{B9jP;`h#FCJLB}stE|8W!cuG&gGLD}vluoXcXEZM;0cbmfrCsXV zBGpeRt>dy-ps&iZ)@B9PgVVRE?MX!Ku_zEO!MVDfhbO6P7q{qerQZ|8-rsLcj+)cM%LKweL1BK<@T~Fh56+%wMZpQ#XXyK(ZAnk*ImR33IvW=|V8Z zw7uB&)!sd@Vna^cPrj+v*iP4x-DUoMd{~~91y+Rn;}hupMEo_khMb(8%{(aLNq>$3pOe{0|CMJe7G)Q#w6QJh(Sir-i zrKQ!;{c3t(i3Zg3+bTWTFsNzIkP;tDimp{o5so?V@Hf4A^XAwzx(7AAa8VAm{xaAc z;E>!0nR>$yjVKE)UwjEuMkf3iQAi~lxFJ75RZ`sZnXRm)Q2Pap!-H!?Js-@`3MQcb zTOCvfh7?UO-gbN01E4OH0^ASH5d868pGgg%6+veJZOrW4cYh1?j}60`6P27ONNP}C zo`@d$M+qN}$G|>;Qi)m61=C*v8d-S&*+A_x5co*nsd%LDQJWvs)cl6O+7ZWW79!z4 zV?N)>o>f;z4sF>NF>Dl=-D(4grMc8ZeB9BCuauz)B!L5K-Qtk!xX6kZ&@>=3`O4q4 zu~NVC!J9x3EOpGmke0cNB$YTVh0j=?7Xk4n5|AB$^I#{k8*sp$O1u2tvFTr-B`YhX_Tn{s z!nYO7_r>4h0cFBw{ACQ4gjZKkWUm8gjez@$(98a;G8^kcVAqjwOMp*XT=mNuCaE2A zb#)UYW2g;F23)H!yf5QUfCW8OhUrg(DZ%f1MT&|MM|Fnj{~0ot$;OyOXhe>$F{s{B z?(VMI=%Hgo`!V`G1EM4N%Yc^rM^mLVcs)o0H_+^`fV4(wb@xP9(+Y+x$UqBoT(#$0 zt!0&yb4QzxL1l~xdUBwW+>Vd;v9R`>oxMh;LyH8AE6bKZEPE#>>%;l-@^V@RhCtBn zCC+`BTA4=OEP_MAhNN%6=VB;SZ&0G}7h#hk4A zSMgCqlKwL8++kh>$r}y~#H}%B{Ei8zW0BZ;sr@`;uxq#8mr%l_l^UjxRLsBc_aZa_j z9Oo%eq)J<0q=Y2vB1dLWX90-vY3s=k`peWtthH@zwLU#H`}J)%fG>a#Nr-p9E?W#+ zdwv8#-ArD$b56zch!`*|m}Y(&p^S-n4{bFD8QI9_%4IMv2Ub2@Ja7x)(8GQt!~{(# z0YQoVOw-HI_YUU#Ef7B+*foUy4^Th}w`2K9t*!dAXE;jTPGBiyjqFOH6Yp;jKTj`# z+89s`zqI@32@`@#uvf+-B(!Y#`P&2gnMV(Si?Bs%)4H`!A?C{QP+WZ6)k_qJ-dKQl zgZ3#Z%!y|gUDDx8(OssV^LqM30Lky1_Qmb4pD<;?N^d?4UYGYdZ`KR@U}Mo41|x1gc68TE^4>XXZh&<>EOO-=8! zn``rNKiLuYP@Ofs@VdNt;p>Bf#3Z2HqY)7asl+|rX3qZklk(H2*6|6Lx)45E?iFtu zD+?o)s3Vb|5c4`g2i6vZgw~iN6c8t~Mi%KnfXajd&UCZ#IdnS2oQ`t3x)NMQm2D9I zg(t3n+6*Pc6>LAxSk_8DHK76lUr@mUJ5pSbfHMY51WY`sEA2O7@3g(d6B;Z1OBC@_T`&`E_HXAp8}Pv|8`_*Z0t=?S^1Ki`{1n) z?1FWG22($*XaW@{d2n-BxMpifPOSf-tN?!>vo|OK+s%*kBBgV0QRY51avzFz_rbACwv` z)}XW+{IyC9eL%~vUnn3OH2dVUEqI?Y1CVzspc#BK%yG#E;<7jSNr|?ml$Jh?D}q?K zu>B0m_wsTRP<{bjC$*tbyZP|&@STluewcQ`Tp10t)_`C8`k9zg0*BwvpTeL;76Q^Y z>A9oi6cqFzZPnl3|3p<4kc)uK!oo@8QsCrZf?Sqz#puv3E-o&V3iyB_=xAwgsHRH*7W!A!x2<0VE;xwP1|%h! zalCK@g{nno`7El{Z6gOwU%TFtGh5A1Z>eVF7izA;^hY-YZFIQ1x}MDZio=6CkUIM6 z^xkTEN_PI(?Sg^>B3la{mcWqf53qvsy^%KzpQST0NK+sNRM|mU&NA}H=yRA!4rNG*<;#9}ss<`qKg`@O&*&MMtCG)-5q};~$*ZbH z4Ga!i_nT^IX|ZT)kDgtF5q1`cDy>~Nf>PwoN3YDyH9&!h2!%~VB)P!!aBcWQSZHYe z^)+bSVWT|L(Rotunc|mp{J&g)>K{LT)Pf+9 z4^rgd6d-u61FC&%(5Xp^+o_0a!>=8J1hH-x6&98S2Q(j~{LXy&d3Z8hH^%xcKR3=T zFUvd3+48coe%5$inFsy;V<1?R){DE|cmx&(yxzWW9kUyS+U7-1aW7g^op= zzKzuNm7bq0)G&>@=oPP5Hf;Y%-+sLLkL>SS=RVmz@LDM86Y*=5+twl-HcKmTUuVW9=KbCFbxWZ5y#|Yt;fER&G;OS z_4>F@#cT4(N$Wyr0eA$Q{l2czq)6H|kFZ^;cw7jhfod_JkdX;TzC-n%$7k0G(I+(m zC0SWF!8Ze+fIzCz#}+Zp&Ch?AO4Ql%@5phdih{xo6xdwCk(QQ**yRt>`0%9G@^BF# zfv=gX?DxZYU+jq2>7k~kW{RZm{o&zZF!g%?S*a9Ojpd>eV`6TotM{WL_zt%bjaQXR zZ?1Deo9lKY=*Am?M(~xh5B#@4m7}YCGZhAsVJ(0D;Bp(*<@-XsU&kjU1&?npR8&-O zS0fS?HA-xFa6C5hP#XmllB&+GiAhL8K&emEdFAg60&=C#_?=X!GTSSxDWD_>@Ys(W zJmMr4qJac{CMNddz~$X&%=#z&(G)&QH9Q8!e(l;Il9(%nGv+*(Espp8{vC;0-}RvS z2I7bx6r)1E%MXBMagzbcDFA{^EW55=+2f)I-NKOOfqkvWjSk|wage0ANy$|FBYJEq zt45zg2V-I~izd^mVDG>?+w}-h^3dnvzG>%?Unr(qBPCLL-NnVl{W`6hN)0qW$#FTn zt}YN0<`DIfsqUl-kNWDfVsS&>ZJx5Fwyw{s!H75?d!NOWSN-NA*kvonxa zgPB#+j6v!%3Cs(AcQA=a1`SR}}$5>S30xk#N{`TbG2 z&L=ep79_`}M<%Prd4!JN!Ki9uYVxE@tO_)ufx;DdeYwpB=f4FgX!ykD*EYquu$>1A zh?|JsQoZfzdYHW3hGKz%i3y5sST8LGQN}k1SJ`qAEfBlaK}!%+7C}F>{;JaF@(dO) zf9Zhb4p^5Uon$sZI#)_>f2jxfFYM9r@qyqG0A>f$+S(-GXOLf1B&(yN6W}tdQZf2( z_g#ry5-9Q8J36+2Zm)^C`BC>W*k&~#A29gP?5++nLly!iRzwm|fEE@OKGk1-h9^A_ z#L$zyMVv@V5&!>DTZPL2#mE?__#;!{r%&WV!^4?SBui1jg8j(s-%J^I5Cje=GWzWK z4YUyn2?^Eo^tun6+PPtkN!obkEmDU7heQ+%FF$TQ(GNH{zP7JHMx>^`%Sw?yb-|c7 z9SyES^hdw(!uf|?Qd*een%eHM4@h3ioH1L&B~a*Y(twRDWSf(aKqx-}quZNw+$BUX zIxqD)MXjuQ2Hhh7YkQ-FkTK4LK-c{$7os*d?NSsajWHXi>z2xwQX7~v?*Wxa{d(?d7&-jXt( zNg{JY8C10DVu~f^QI|YtA_z0YhiAx4c&JcapFPLX#wIBal#{Cpl%WLxnJ z))6Y)%lHK?|K4F^%H7R+=ZuMWowznW7Ap5i%`t1n?4^M=JI^CA+8M7TN!~-d*-T0J$=8?AMu*nAJNj`$K z?6auP!>m)Wa&*>dP8Q^p7j|EPH)dnI3^Q?I5m{gl7r-0ipPa~K!3M&<`}GySm)G-b zYwfMek@7EJz+fb;1!4tkx!ht>HTUgdHTOP={s6ET7^(R3ON|vUPB!jkC8SZys@uD| z27{C;F{f@@huK9TaAE;PLLvw{)dROiOFD(FY5eJ*_%fdmG+s}iUS2dXGmjFaOD6uM z3NWViY4m{~`Dp3sfvBuWq>cHZik24L-hMaIXDhNo!KmHX-xP_rjFyz|93wWao0d1d zseu~@SWA6(9jGD6J?X-Mob2awIcBujP_ehC2=fT5g+*^am}XXT-?k|j8hQvf`QsMp zLuOXi_gk1Y!vp(q@$rxIo~F*s&h}?m3ib2R(X|MB>A+#!gjw;O#l>exlK7U+&8P!6 ze`;i(hv?h(gk{h9{bg?FP8yw1M2V4)WFs{I$24re$4?(7a(9|sxXT`FO$C|S#*!)B zY#Kf01%6)3k*Fxl*I}g{gFagUy7ySyO(Z+CKvNw#L;`8`rb^d|HTboEMcPH9~NU>KatQu|E4&Iwc)=^}UaVUf=Q zx!*FGhd@J@kd=~R{qsj_d_)ey9nkvPIwHtH1C(QO!m1F0)t_`xp@ z@vRHzr=^b-6c}OK0E~SoCnrTc_^=@no9aw7D^Phhr6b<2L~y@ zM!nJV)g>Sy!GOvc_|_%>3pD<@fIKD_C1sDN z(nA0n(l-H#Y5n^b&8Xp`#{5PokuTJZOp~V|ats3eksv`2h#xT%6B97vEWf9AL|<_VH#8;y1`%XX>k3XHl0s*1*8@|e8g!$m zx?+wReuVrPtv2k$(R8$cM2hO9NdHG1pr4m;=9a-gS>0K^ig(A9{7ppMgT@PaKLLuhke#%->w zuLHV93Nh0C?0^-XyD>-@(ac9}3Ire6HSf+>K(w?1wMLTU&Z38$TTyQ^hO^V>;zWG7w(7RaTpMR4W%|AE-?3TmeXNfMV$9c!3}6K+ z<3Mo{8#k#8GlcR5=uzIrgEOTPETaJ|#{v@TU%z|_{0$DAC~DM_KHnPai;E+Xj(||l zg4RBZx3~9eD3+mPM=H~U@HY!JH8uP^_ddw?J{A!c7O$UPVGKzUFXiqDIGdeO);DoGz$$2P=BQj#Krj4AmVS zKO==2h;!zi{u_~O+;;n49OX3cocH|GRiX76^lgBwfN9Rv5opz4QhT~l5kEUav%e4v zjPSF*#RfbFe=5wC2|w%F%3>-~>*A?u;*)Z<(nkcP&8WDjw+KpQQFA<(jxpE^i#hq- z(5L(MPaf9t@Nd6>N?2^UVVM#w1Ata-79t}_U+;^g^oUhW35hCi%E3;7S>fLBc~F#p zW@09w?r>6S$0U2`As=O^O-ib)_RyQW;Gjan!X3bFaNfLe zlDmA1h*MW!KHX{gDZ(QmI(o;z!J@+&^Q)R}8ap(~{^<>ch3A8rGdI8>k+;&r-58~2M;=nW-6be9{Vs%a0w-j3PynC{W(-Xg!xakYzt zEG1&RHE+5bdOPZe9WaUguwC0Hex-*vHrlT~o{MT|aJRc&H$c=cENH!_|7AEWxdm1t z{Ual}U{!bR@vq7!*LO?&5F4}IgAq14k&4+0LK&vAiE;Krur_M#isXE*B8(hud*?rM2>3J;IF+0N}okP#SujJ^c+tD7n;{@MH#ADA) zF10=;hJZ@U)vW2=4KSG{1Rq0aOrbCW-VxRl$<^caQK0dTII%OdQmrQznq=x z>g~N%U+1xJ-kUC|3g)R0%$8RN^I+}bw7g`$y3?ZLbVaFQ@v!~;yxZBO;zpUN!bb_0 zDT`OHU^*V~)AN`M{CaGrYVMJcBvPL#`x;d{E?N$J!OE78VtV*61@c?2YWh|Cvez2< zj<+PmU{%VbM1nz-sol0Qxd6}evz`pw$zIJGXOkQ|wo^hl)&7R{VY3qz_}_~7-AMX7 zx2CUXNV79nl{qB#d2!#{u81z2AW-IQX|+M=tKf zgf3#(UGwB2H#abBaV5qy>a0h(*tCno!6riX1Mw?x-@ygz+7yv%m6kgYLO^L=v(n~; zvWn!x$Obsze6M~J=^GgQ0;?;MycVoaMM{Y^!lIF&?M9-bTMYYBIYYEofvQyH)aOII z2lbt=lKEcg)Ht&OV9Mlsbpd<|+U$ixrFCIp;b?9niPt0F6u?=M_1RYC5A4&(ex^(^LpcS#XA1-?1jPW*Jn?2+_0FWP9sq!bq=P};rQn6 zqfE7#O)BZjvkoKQ9aR{pboTd$(8~PjABcS;RIZ%a<}zZoHfG!6Orb8>%^fhtf#Lnf%z=V~w>rf3{< zx^5kq4YRpjTr64qUU%7^rg~CR-TQ{=Y08t{6pqH@Lebe@fV#MVgamCkX}@&AdWxt^NPa$Qjax~gRY~=m zDON8p*lRrvsPh=MJKvvcX9lYRSbJz5D%5_yX72+G;_x2=aI0{^ZCoRS26JV_lGov- zC%FJi=UADi<+b_p2*LCcdR0On58M4%EFlIXGT}A9G#( z!_KJl-HmYybX?1?KLi^-!qaPq(N+M&&A)XXuX2i=fGnh}(yalIo3cm!XCdlx#~ccN za~<{iw*|@`J%7yXd}9vRRm+{N@N_G`(YXjGODiccz2(4?CLa1>h4wT(O&K!H%Af^~ zW-cWx+o`XWqDra7d=|3v(S9*`EMcg|t)Nh_(3Q!_B#Z4&UhT$RPvVgG^!KJm-K*{w z6O~1Bs{=tFYkI5j-{){Foj6ENR1`|}ru?1+c_XIfgHVdKfmzN#5N^g(;{F7VM_#Ma0jD_`!d|XuyKaiVUi-r5M(6Pn-k`Dlv zxz7r7QpDU;k)IAfP&pw!UK;+0wJ$AZ%kgCSGPaytkk!AR{sSXF?Pn!~-aIs4=t@x3 zoA(TD(;y}!Aox&X$3jdj7+(`v<%Ss(;{d6LQ`69HZ3rYB7)sx|P*>DW&aIz^mYE*& z7(ddKi+IflPwJ~$=EEyB zSCSd{`0hZC)(C-*Bsn)13rC~5BR5kc??;h=C$`hRqM|MCmH6YAtT-YrYj+@MCVghF zN)HZ^M_KG9X&*b;H??m3n4OImf@cJ!Jw+JtaChJeUtb(^3@-VPR3;TR9=EL$jgYui z?0brhm>&B~Pv@SXN;&1^{PMWE;Dp)q{)t22(5%-0cjJO-cfu8=Fi-5ecNPLx-=l9+ zJdJ~5!30eTUjSA{If8ILw8hfof0(M}1{cGxLs<2|^!w?|8tO1V!D1V+&G^a9f)>0) zl9Hd%7)dNXXmEAf&+|S{N8CHSIMp-neb|;EW&Xo5^Iw`8f}M#e=Eki`^=~>pl{TwU zm98V*&BPo@U_{^ZS-2v<`yQ%G{3o{M_77DLz0Y9OLFci@5Syn;k9GU@a)0&{!^TKj zK|ygTr;{Dh@bIByo!1jTZf2EyrCmR!r2HN!S}rTI`ZAOnSg2jAUiHSRq9*t*oJCkt0DkBezo#p6PVrr$18Dws z(zyaOS%{R=HXg;$y&aqQI{LFWK3*XBP6a(5U)p@cbxqFqVLO6qV!_S`#Ufwbv z8$PSOXlcnhT}-Y7h*BSONxPn}UlcL@kS^NOo0DFuV8s+HAV zxY>Z%#01~#5rJsBgY8%`w>!Bim$JzUFS z(HBl1%C!6fUyqlEg~5fi#p1C%bF`%In}Sw+Ewj;LC8&OQz1*F0ie|U3!vUV!ZM?qy zY=T@;njzskrfT0KLP8D8!Q8JJqYiGz@=y5H{&zdTPl*Bu5$?u6IFTnGJ1&i zGMZ9EQ6pbXUPBZ1gFU1i9YGe6TS2K?xBji;5{Hc6O->Q_zvpp{iQV@Y7;}8~-0rav zF}rP1{>J6je3q{k4&xJtvjeK7UU9{8^ABXAKgdiwen9rtM_h$ZJg=$5jwdP_1jGe-ZEb3UDWkt5T#uFi+?$)f z{BlQC&2MasVWjxbc*odDF)+SCf{UcOUG^ylF( zJkb;*xi21O+)qaWxDu@F=kW8^q*uWf0|+6sL{bIh8`j4U&9Z!i&B8>Z1NT!tHV89- zBsp(SLljgRWMs^NN;pw?1 z)oPp#e0@bCW7qGGZ#KrAl4I!g_$;HzJodaq)R$&vGO}2->|6f+FBbq!B_<(vW@lEd zuFml4?>>kvDa6p-Z8#y7kpc9Zc$wFVg$R48r`9jwxf7dKX@;kp>F>loZWkSLdOA9Y zcHbH&l?)>L^7GAFS_m<5lt4ZH#P^B;cpyIW3VM3M`e|1UZ$^7ja6Wt!ypTVs`^c^u z`-#osz;aQ=3It{d@}5qCQVn95>ld45=!ObKlw`^t#zt^R&2Fqe6xtt}Rpec=GP+Ih1E)bl2IOr*u&NWbq*9aYa!#3JU@ z*rJ-*0Gbb$m>Bm+k(i2?mxf&R(B7grRNR?u{g-v8`%z`Dx#HX{pMoK^Gi7gR#03U7nC~sz(yt?h>~nQ`EW(!@?z;JPu*Ar8ZHRT> zK+I=I!N!L0=*SS1wy>$FY~{i&n`fGrURM=rsre#868Of5z(|rC7U+iu9hx22jfyzxsVy+EEM8j|E ziK(JV^aV$>kUJ62A!JzoSA~J(dr~5Iwk4vWMq?BU7nh!m?JDp0%mX`#?!)ycdl#yb z=L#TfV+rvw?^QS3#cs%6tkYUYS3XY^wY(x#aL0!zRrBp>cAz`UIXll`3|3;_`z>awf`r{q`lsg8)~;lii&4J@zR+zBBzMG(ylJy-n9DeARNChU%q7JFwRFwPViZ2 zcowu=(Z2e9(b611zq^BJJogx5y6*k?29aQpv>#Ar&JM=?6B5F)?}b5#CtDlkR)V|7 zYSfTFG4<>$-s{wn@3j{D+v7J~!MF2Xl(j@qiPe#c*W9aroBUd zH67iF{YENWR@T;oMS3GADMUWXeQCMiX2dt&5%l@9HdU|8+owFop6FGIY%vUv5-L$d3W~#B2R=8xn9*$M4kMV*x z#btoqGVYNwFmginqUx^ogSlCPcYac|U$s~ZhFl=EK)-|WtnfsRZit7v-Xkr{6g@Cr6F1E=-3Cg`yx=W8p=`h(45(0o*8dFfZ@#*JmF~QnUx% z1fLb_OTQ|^TFZO<-e15<;|5jgK?!u_Rt(H}-``e%FY=#ro9)^Skn&D>!ojNA8oX#Z zRkOz2cTGJwJe;dr0R+N$L1smqbk~`8LfXX-&HA(6D4ySEO=Q=pIY5Q7&ZlOy?0cxj zPmTyTR>&mZe63i79vPWNhvKQ zAc&Gu(%ne6bayD-NH+-5AV_yfiIkKyNOyOi^?c|5{xi-P?-={tZZ|y7eP7p#x#pVl zr>AtvUfZYxw_y)nBqwn!r}Lj=V02*;H?V!68u9#FPa+OQ1Qu@W*}%w;ThEx4{_j0u zM0VxVY+s;q`8efxzqB+ceWv5?y28jx-)8Suem-T+Ld&b`bQYTh&pUV0p2y#%{nFji zTSR_&8gVwTsGzV6fXO4PUCd%l)Xst37oR_`HyQ)>BYAyc$imK^<9S`Cm?tY~5z!hL zsJgYqq-VS;Y;I0IQ#ZPLI+rY$A;6L^h{N_tAOq+MuNc(ri4#LH#6Lc7jHwXC;(^{h z$95UpeoHkZoWxAuJf*R}>kgtjh@`kZO+O8cQ+6FldLI_5R*^>(ONSdzD{!oD>=X&| zg?78MH4N2lVnuamX{34EbNDrB5 ztfH-TjlWMD`_|S2(n{U>`in*CnZ<4_3~&lx3)f(SGm#kg>(wRK(QviTE#EFC4;w* z{8BECdpr;JIXTr83lvktV}p%HrkY)G+rEE@*gtgp32+oRcO|s9KY@!SR~UztlVg~# zHjJq-T=s^{Q?nidmdyLWahl(9M}=e)$K;T$*Ri1bA^A_X#EiL%XMZ^Kb5RgI zGQZ*Qot@VUMMucce*f@NAHJ$&qTc7UG^3O99!Z%rA=#YXm+}FT%dzw-F%YwCmwp|G z-X!iKg1b&DH`Me3l(A)r9U(H%GA6Kg2z)dH&QiHaBr1<PqZkCFjOcVDnTzwz@Tu5ByZLyFLQrlbmu;8-N!; zFZ3;xVKTB-j31Oi9r%S}u?G3KX_O&8`l2F9W_EU?o2!0}X5M%xdv%PIvD_|0pa}|G z>5B)W4l%j9)Q)v{IF0q|##Zlgva%xMsJr_6L*9qsf#A<$T#-Ca0YU8$);ClV($a>9 zD|R*Y$b0$2KOn3^MfUF>v$uTqqkP_X{H$Xod<$N;_3c{|B(bg(E;Dt*P_WaoyTlR- zy-4vVV$s95nr$!ly0wNTeP@~nG8nj*9KO&vyL_L7PVgfYY62U$NtNsDIQa2G0qBLl z()lXp$-_$#6ExTpg@%MRHxM zssfHUpROT0SSK;R0oq(pW1W19LZ9!2U-zV zqljj}4WfEX9ZwIF>%Kg>?=fjl#;dmPz|J(V_pf$cXEOwwLP_ca1Owg|jw0_Qu(-jl z9_h|bG_6*{r;&Nl0;k=+CyYty>}D6DB*C4cVq*H^%x>J=cX$&uqPh(L2=EKW9d)WV zH4>AEKAf`hT3p7BDGi~wn$^%~GM7+P8%^*6W5B02Ld%LmEI@>KuA>EHp!;Q%x1J0@EI4;wfeb zhfv*n;O}7@p95#4BLpAZ1axEQ;~S&LAc!gEF^5SdU+5Yd0zjk|9Ix{1aFq)Oa}P~I z0>`MoqVtbzI<&)*QmgwX7I)S?@C?moI5FX(%Lg#zjYm<@jMp7==gP>)Z4|dY7j(2; z?YHYsO%@L)-YDf?d?lnO7Clq5Pax5wl=AkK@cOW#xkc*UsTVAe={KLhwVLbHx4gku zR;Ff9ACU?g^dRG^59v)=Z*THwV|i6b>+mM(!;hB4!`0ozc^0t^SvGM%Fq&`bV9qo~ z#`bjduQb`Kdb2TEly3^(^YWZ0tF^m_bFE})pD?KYiT&^H&Gz@Dc`UHI35P)W3R;8* zk6C+cscZ}I@bG|^`uvtMNdP`f5{vD{b9C{f7^z3JUs;JH#cmJnu6cu=FDxpxQS zTE5|$YljlTZp9wTNemjb-Rbp?BDDZnTAlL)(xaX44f_Y)u657_;Nj6Ha#bH9kJTsk z!G4LtZC4>k`IhVwXM5SK&A7cny!+7ttC!n}+~-K7 zq&FHh%$gQVNMO@3)O0P5=vtP#H#Bn#=%l52B@=$YK0Q@b{HRIr+M1B-$+W1mGn&Ij z%t|{-Ge(pI=o4I<3$7N?ff=FWwz8gq;zOrXv0K7&BC_<}0;L`E3EQ{=B?+KE%;afK ziDsIVrzIo^Sd@pPrL&S+lN`1t~z`}ALFb|l?*%{?x z`B7P!^Ktl5y1Ti!IPCX?z$_#Ny34#b^8BXx`L;zx%FuA5i-d>DO@<9Yi#A!M`8hJO zDQCI}FNjL&Z~n0Q?^tlHhxvPxa+^OY>_9x%@2a}V>6(K(V757GKE6kk$~mfRYd=R# zMHMEU`ZrUS76cnoL^H1zVdPO^S{Vc7vut*-ty7cXeW>=w$IYL=c|%N-J4ir;uX|vC zOiWyyA^YyTx<4@=uhs@L6>O|~z(`YgrY_ye$m4X!E=R`cXBUl7OxFuJ(*l4^(+syv z>YVrg1LSk5JKD!|R9x58G-a?*EOyxrhQzivS3JcUC@UMI0boBV@Zm$q?^p?0sFB#s zp2~jn|4*qfPVtm+&ikpjsOZW_KGz%03v0+|6%_^v$tpj8|EAPmNcc+V|G2zs^ce6j zTLabvo_d_~!&N>@^iArg9rE9K_n*8V^J4p}TU zh=68sHfq3cvS!8-_A*($aWWOgPXHSkWJ@z>mM&0& z99ddx`y<`fJI3(Kgj`aBxm};M!dZ59%Z>lTG%&~fBy@*kQdzC z)D+Zw&AD)-sb0TE(bTk{Q>12LSc@n^x za5_ru*HPf>hdv#RdM=oh-}mJ?KhI3-S#s^DIGdWIT@d;RWcf%d5c9py+iNZi$AA z=;;m-RD(1;Zb{-K;gjo=4m{Zsx8zLHO|VZC_W5r0B7o{X$RhHM7Xe+~(8a7uzl2c+ z9X910Ehpz^!yaiw!*jf`zHC!z8g%eR2?aIe=GmbAYX2+v`~*)o5Jl`$b~+Jg3Kd;* zC7D!!RMig?%6-TmFm3{VGVI(&-fn4pk*mlfr4oOVB@}cghE6FkiV9T@Fi!C}hEJbA z^Fo;rRE9Z!7n055d}Nvdr`rirT^%Qzh5GYv8q$>XqY)a#UlnpIAqB-gWk=&ZJO9_p zwReKv+OdowRU4hY4u?UhV4T$=DO=vH!GL|2y7BsW%m!)>!Dde>-~~2LR%~I8z-kU1 z31^Xj%u9S}>2EQPsR+nw+JyvC{u{1{;jB%f&~?8LH}CdE*^VKds)hj~pf83%l1Tdg0U2>pFE&dSQ{K!6tB z_80E6MoES}jm>p;8J%Mm6&I(Xr41E{Aa{nz!a!Q%JOaJ{8lP0xHOOlCs3q`M z&&=&14ULs_YLYjgE!p48^#f=?a1f#n_0=kMRT3g}jAnI{7k!sXc-<$zZnh1{88EoB z^S;{+{Q!*WuDM%6<9{kg#j2dS6Jm17LY>IXM)vt4sLrFv)a3 zIksIMqLN7?-la;j^*q{r`zx9T`TnCNer>*&(7y`8e>7i3ML;->ZT zPeeh{MH6%9zU^?GgA$;LgPFp(_Vz;Fa+=T)3}&>M(kapP7i$WZ&)m`@2bf8w@BF&H z^a?UqQ$gIYgJqgm)Qx>Zb6q$0qPQPUSb$jPr9 z3OXOZz=UV~1P@Pmd(x{68lc`j`WGIJ&`|x`A#GV7j&44CLza%o>7Wjp;F#*w#RW$- zO&#mQPG{TI-_7TEAO25e`K>B5b0J^Zf*Kb2u&+PQ!UW5>H-V?7_PpHfbeGLkQF`M` zS;J`$EW*&YL8p^1pS?7ePD`t)o|N+GlNXV1>Lwte3D_`96omBju!ACGsF|47zj@v6?#?xZ(Xg_H`}!_nXmP19&3Iu;xyCT4 zVG0U*pglfjVIArkuc6JB!2cWA{B3J#eV8MK+l9z@HQCuMKsHZSOTDr{;B@Es<4~6O zQn$iXgKJ{OokMdFfXqi+n(4l~z-z-m*9cqWm~N5H78( zR8HQd@m>iG49te1CuCT?ZFQpT?-c(p`VBp$&B2n8)Yd5#wnWm}jPn`H;`6i4mzKJb zov+@2H7r)TN2o?IP&9GjtG~7WcNn3N4ON$Vg{pwhgH9+vl1JwA8lfHj17`uM`#8=g zm0x9P!HN+n0R6noZ0yfKcq(oT#j}5e!?|2Ghbt5pr&hn0y786xPf zfT5*@;e1FP-r!;e&=1Gm3pze?L-e5yL3qIx@J}g$23KdhaU-c>ZQP@83~XPtvil02+m1 zhqO4m?Sd~^^Q~pq)p;u6n?I5p)`~fR^})k2IN6ehr|3AFev|{qB;SpR#O~~4p`h}; z8Hm{cFiauAmWwo5a&Gz5dBQFfB^Cx_h+qi)6Q%mHokulA4A2(RDH;9HZL5|t z>t~vka{W-%8@sf`_C5kHde%3+T(|8b;8x3jG6uy{1=e?O(V$rB6u@_|J6zERx>z7!8c?3osW3_R z#3_}Qv0@3{9cihjjE;_enUPV#!Zwm?F|`4ZoQ|m}gM;(LB;1!bu1B2E!t@-hg7M0( zu70^65ywrIYUv&M0E*fOn#SX;kH1IqNy@G(i}vgQ&d*dSk?KvG0guMs*edCZirUzv zfpj7fk!7i5h5sP4v%$tTKq<8V)5#lVzulfHL9}r|B}>1$_P*Z_^Ef|=c%wXFyDfkr z5%=+U>4`!LKKq5v>W8?&d#nF0s zVpjwOa9$`Rc2A%WCxjtDe|kE#18vmd@ngf;27SokdWKZgjVOr}@ItCA;uWBAfS4`6 z(LbVAj&27x8lZt3#TWngDIsIHzWNw-_jHGm+{tqJROJpc$1S2)X7zNRy1imzJ7NbD zF5UhVX*A+-MXG)GzB0pN^BLDPRQw!;hMJn_Lmo~?4GAcqRZBB-M>0h9x}$IqryYQr zKb2-Y`E6Ld^O`Qx4K7`O1_yy(LN7;}+d3QDk4VDv0?(kze)1v{QBlG`S2P4Kmi=0Q zUI8GP?gTBorx!`kyn}%z1@si(qqIVPu68d!0@@E~e)}Q7n4g)iq9jwf#yZAp0!N-3 z5h37YG59%P&^!Xb5HB*6wyW|x{LnssJX!_>rd(!`Np3fNrh zgZdP@x`Qytlr{B|fvOvg$Oza{&4zx-6VSJR?2MS}f`CEH$);{-2E)tv48dfW{vY06 zSwgW0>(F)x=+LD9DSTi&#yDn=I$YR|g1E@mAB;;gQGZI;)MS^1F1!o?fbsc3G=thu zYLf?%7)kgZ?rwZnVp2|gSH6T7$9z{qGUq8%xBa#{Ghl%+Oqv9*%7ftqwNE#YLuC=k zsn`uOVCW8wPIn}T`F2E#H8`QN(HsAP2jG~4lZi?2X|!Zl_{=jzpVK`8FW`5~x$p*N zc>@5Px`vgYaUX0xJN>d}#vbJN0npf*(gr6^*yEfYZ@#62Rei%wv_kVi6$#l?Fi3;^ zL#3f{BWtQ=Au9R?0FL#^N?ug_0ulPebV>+AIs887M{9EFK{!)|=6y-*#w>_aBRPc_ zG)9mTP1HLP^d+k(t8r@&RqxJmd)?r1R0o+xt_`sPc~131$^3L}zG9K824oPU&A*3N z=c{rsB>nyAKdCHqku!8iKJal6*Npu4Vi{sw(9kFduJs-w(apCC5QRqzVtK zp6V=uN_K0`E4KNTS42_qj>iR?L3>~vtVok+Z9HR?3Wt!?-(L-jSDc`L3xKR>wdL`T zs@GVJHZibM8-O6vmFiD{FeS{byA?@E|3d>IJ873CxVJ|)QV63mkWT`6OR}jVNu+40Wg=RQc^TB zZ$b$J#O+BtFjOM^CQ=;*#mjhUTXfLc_b|Brwa1zfW|5|>OlH#5KeJQk5F!y}{ zPwp!aD=ep-Vn~`0d%rw5*sZ0_78NBArxYxKQ=c<1B>i_ciB%WG zw;IbOX0o!oYk`a8gWUN4M>Ao>6*6Na{=@55iCWrT_5xo>Df!jvLoKb(DZD(w8?uT5 zlCC(4%afHlu1DkTfmnz%tht5h;mrf>+|L=~T`Q6fBhkj`nJILCm_ ztIi2OZ8*n4r#Im*B#f)9YO6)W=sA^(=OZ-#sQ8ZA^4VMEhfMV@7e|l51ZMxpy`>`r z1F9ovmADa;P`GMrX39ZB+2t}gW6-)IfT^MEVz_YBGF2^|IdWAJ75Vl511{D?lpjg~ zc@f^Y0F1s%tBN~Hn*YwnYqwJt_96zsFh;YsC(a&`n=crtSSO#XE&)AT_+Xj#aIk=Q zBm_?(IUjLS0#73KB6dK0C$X0Pif6|W3{6+A>)RV59@O~PVV zSE2pP?^t7IyBvr2bBTbjCb6jr!MwaTX;dz|)V&{CgNdqbZv2;%!O{IPh+g(z3(46< zfA>(|00!xi(bbtpDA^oSk45aj&ec^K#3_oKn}M~l5)_48$7kA2De?hSw2^>!&o<&a zyYjXG<+vxF3>!b*7eEp9iaY^G<|ZR~#4vjiCn*>b7NLQWG0{}Dn>OeLSrEpEV*c=}r7 z)3-(1ryRV)s77ldd^KstrNzK*V(0%ez%ER>m=^_I_gc@y=!I-?LIGr@}k?}-Vb#8T{{TMIg>_0oKjM{nC0F-65u?P zL01P`DC^+Q*!M&C1Xj#_&kwmINW#AwK*C}-jnN{FPklO!x(@x)!gQ@0@TDVA@$Uoy zzZ%99c#L$z(9`zz($O6=Wh+AIe{vEJ7Fh%UM}Z`}N1n1&=#sJ%f;&`uzPMl;0zGU- zHdWg+H%~W6l0;F>75+watdP6&0hX(Gd^|dS@W=DIDhj~fsj9~@oH3HPSXez9qom_g zZo1|gF_3@^dxD(2O`$$`A3EM~et7!E-UJPSl}`T8q1meOPkHO`*4?>6{KI747kD&} z0I>!P9RbF}LO|Y7CD>vJ!67B&D1MAX!})LBg$xD(rjhM{ZoR)ep&xIk<%78hkUk9o za%BdJ0dTzy^B??J?Vo|s@irvwh~*wPgO2+9KaHpBVzo%|F`q&3t#_(N%=~PCy*9@2 z1WxXZq{XCS+t17g+2V%ZyG_T=dP)hD@aB0@l9~RxPW)+5b38yGn z%*vY*F{s^{i65`Fdh?hlPGOQ0s&m+g!6Zm%qNhWxCd7i)3szEzAf?r~I>h}Rvm7>h z`(0fr!&pWkiTy+G!E)o;pdgR9IH!|VfWUtN7!i14-jYvXTsrp7WNfiS~&n=8-ae0oyr8`_Plg>!?!$>RSjZ&K_L=GXL~Dv z!-~6;qR^F_C(?uUD4^b+s_Jx3`XI-P{Kox^6NU-h8(jXvdSVJtaQg}P9YC9AMW~$1p3WM>QELUbG_8V&*-;s@pse7^}+6~`?CA(;GUp|2)CCTj`-Rx2bYDhFD`ROib?IR*|fu{5L+$;2Uk zNr5Mdrk5wEK+o{SrFR`FRJog7Tpw5<#7d|X`N3uOjAAl$~mb6KCO*SCwA?3JDXoO7`Llp1iTQWra~ zO3~m)8=#)9W7KO63Ra<>*GbG4>c|HxxXU&_n<1#3<^Jc46#o(#BuiokH*?_pKb?9A z+a)QGK`?P+The&i^5nC9;nMKUPn2^2J-u_{oO*Wl`4hUBc;)W}h}kO)3j>p1kRgU_ zu(G$hHfZy7e^v&@UGKvZp+;itKK;~deeHUY1?15onntN~%lv(Xi+g4`u6#X3r+{Tymw1bPf(A_S}vWuB4D){U^r)i=o-2*Oz$&0Ok* zDU6{1R{M;Hp7NYBZ6ahtNl7CXm$Lf+&`FT=W1u{AeqU`#l&{bg2pqH!ttUUdfU;3q zeyDeDs{+C+P{8>PxT^Rc6=#$IE-sxqr21j(=VV=6XKXHT9GG=l906Yrhn%%08oRzRbU!}aE4#KrMBYC$h z9(7dT-dDRW5ws2@>W=0?5qJs@`&UiE!_lV z+GptG5amXG8}^7I@V}v+Lg3eM`anH68yH;nYqB`-eZ$TV;(?G3n;vgmhSDp|EI_M4 zQt!7oa9R*^{BY7ne%U|tFp&uK6PAiJAm@=YH>~vkpU&}%tIWrzz!;gIPf~h-4*)O> zPa)69RheT^OPRie?mFuHau?C9U_q&>=qle0g;JA8HN@ROKU8)r*%lcD=E@9h_4DWR zup<;_aNQY(zjx*GBqO7TQtehB@$`}qGDI6ZRF*R-^H)+L z`jy?vbI0AL-pR_>_8@V+@#P+sbG!j4L2<$-f)&tA&HAVR7k-HXxkFrKWiw`ul3y!* z*CVWhu+bq7fjxm&Gs%%)ZWH1s%>IBXB26u6LWB7JlQsKj0E;lYIf_6{Q9M!!GmOqo zBUBR35re)YUeoi$Od&*=P_Nd4&<^y7ovedO89?kIK}2>N`1&%$HpGZBsrq|8^RUz*2CF7u4s=@%dO^^BcEV4P1PUN057~75&@L^ zm=Gj5;KeUronHd3z67}ddKp+g;YQ?2!GI*wYnT54xh(2ia-@EzM^T7wYDRU#4j2qn zm|5vUD;*eJkMh#DEyp!$55A=FaIiR<6H!Z>(>T1j&3IvG4S5pL2S6Ji6efioJ$tYF z#gj*PO!m6NIpw{nm-K@EwAJ4OV2|bX>ksh!+H<6?%NCLDN2D#t=Re5!@yW1>rT|$OMlc9i zyt7jnxcF3vFWnx5jzGcUfk218dY9t;*1~9^Np}HWlOGiKFg~82Z&Nt}R1VN+)46K# zUz0;aOOmOsU+yBq%=05gwu~2`QrR-;j0s6`hLY7{ZpSyMQS zsbCBYpIIC;+KTzb*F={Vq#PQqt&1 zgN@0`v?UI_Sc{$MZ{rg#^J{N{f!QNUg1%=(I9>5E4uOwtSl_^Ieiz82gchp!bYyYx zTOf!o<_SFUO!vV^;jRg=LFC5{p$i{KOV0mL%?3NNQ(4%7?NJv~P1kqmm20ptf4s|f zNCId8fk^@=U!*o15R9Aq3Kouz)+uIc+C%Vt)@D8K_V+K2tYoEY9<7x|!UCF}F^B4g zEH4bW{b8x)TVY{etIxMTV*~UKq5^n_o-Qdscv>0Qg}qv(Y;=h~?^;{u5db;7D-hL^ zh^EF}o2teF4zX;AW(Krpz%0EfpE3n)cC}iRG6Lj&;gr4gmFe}%HrZ`LQebK$=KHW$N}XB-6+sg$-z_t!hq=Yh2Bu| zv&J7kXhHj^b+IdQYmz-?vN9~DZZ?c40&r@aoSaUWJBc#(&tqc;Q8{pc+B!M89$-lc z;$uA4Ex-{bsj=4OgrN@<1GsR&V=4xu(|JEY`81lBPoU-py*Z)>fEz|Yn6L6e7AQ)H z{)(ObF|anCavXg4!$20_)t5e}wjGYb{|cz@^E*2OO&%(5opwlJa@W?GgLN1Ab!7?r5C!ZEgWK$8kGxO zm*=$uV$w{^^*Rocip0}_md{gAfiARsj*RNumo_i}724G0-R1!~xWWK1U_xxEglVuo zJeJRCTGDVBWvhy8C0t%=q3Qi=v0yXNNlERQo29{)*yx|WdI{U^EQY~;zyHQSPBpJZ zJVMpV0uH2a@2?{O?t%Y%9z*ykf@kpBA`UU6t1yvMiy|m1A5nY@B=20iRZi2Qo%-7JGIJ!>LrhK$Y&F!6dpq#U^t!lrj(@7mHo@s?t4sLM<9VxOO68z zz0-VhL}pz~7Z7hK?h)I#h(FM{&Hg~gi#4JO%N}r`6A}mt>@^{z0nHn+GhldCq*0p* zEE@Tb#Jf`s=M1s*@n2o+26y=%0e=yiT2L}B22nBwhc`%2N)45-Qp27@SF5hCC>;vj zXpM~v5L8(7{c%53rF;X=2<$vQRst>qLmpod3_Zpt9k%zH7~>(Zo3ymy z^{MJe_{gTu*_HYmTtvW_$qT|!jAp$*9Z$af+LxD5foADQ`Ix zz$OI{i#D(&9{G8L<~blO0-((xtyu_7H*A$)l9gO!3BXAOAcv5(T{7Dv#~0%m2-xlI z1_0SHInY7_HZ(W?XZthq&lB-aD4w5-k9b4sO~vF zj}{SNMkMgv5;$yJiNW9>u3s`7^nAfg=&ULcgoolpL3euUpI0wbh}Ce5UfA}2WHgv>fb@LT~jwPv}|{GtIFPPP88KTvY^ z*W~W?B{3Rx1V_UnhB!&m*9?HSjf`+htI2-Ox9J1(0!lVq$&@u1Emer?=W91JpyJu< zZmVO!0#EKx<^8@rrtS(u2`|gJw1F~19;5_lM4qx68Br!KEU?jZk7Ni+5Dz+eGX=uupkoh=Z)Cc(L zbkntB_C8?KP?SoRXys%!`#dFJZAY--?2b);P;Syt=lp5DeSPO{+Z$)=n5=6N-`jGh zRU7u@Te24I(^J;33dQbIT+b^M9}AKNq+a>R`m|(<%Mxd{U1!%iJ(|OTx$Z zQ6k>w zM0MJ2!f{enBr?{`0KxqD#XrwgfK28y-{$3AeM%CEE@kIX2?CDKoSm=2D=O|pj!IPW z{QiAl?MND`kc;<>&Xm5P!8BU3P&w5na?nUCN=)8=l%sRlju=Mz02b~#pE4;J9H;SI zqFrAWwvMaXQ{W8^JpzmgT(EaV9N3BCU%u?fS3srIbKnlX$SVjABlE05b2?r8QA+rU z?^eU_=6cju-5CBNDXAwgGu+1Oov86%l2VLZOtNyiRNo`w`irXH^;D7Fi{ zQU4LY^&V?N^68EFWhh}Yzow=iM@BX6bloxD&Q2G|vO78WugERv8&{J(eVY1jagln+ z)y(t_+^~DFKWKAvRZV`~A}rSz8>{4-?$s3B(qbJ-W)+z3Y3uF(p2j9XxY9;R$(;DD zEt%Wt4a%!>t+V5?65%Sn4=yh3;C6~kMWv?EP;(@qt(<6@0}?0GO(bFPGkpC!`Q_yB zaH!EfH8#F@AGSeLx|^Hy6y2!rfM5JKGT1|DtnoO3#jCDq-TlqKQa`WGDg4y&WiRWl zE;f0Hc`lF|T^(}h8|AR+$;t1-rWR;cKli+uK#`XA@zpZc)qT6t$Mu=RYRGyikW2Gj zfsOrvrI?at-+Om=bhO8#!pf__E6}m{u5Bfcf+Q))w!fhi{A=MqP$n1DHOv-?7RNT2 z<)#PAA-~>Ufyhxcg|=3Xxie5Nzn8*w>cy5XB-TL6V;azv%GXQ)%eVH<#8jANW%7GR z!~sMc%KzE|SjQ(wTIRe$a%jNo8V$<%XPlfk^^ThOVyTLkK(0rA!-WCPY}KGKNm{5f zMgI0J8N3f&^M?CrX~x!@e?N?jShtgyk_-(ofbYo8mngl~zU_oRZtC}e4XT7o6dwMQ zWKuy+?y=P_*N=+naJ$ts-C=6C>BjnS>R8$!1%^r6jp8I2U({^t|bDA^M2+}2Jb3{qZ=2wo50bVZkaa+H%3Wb6F}Y&4RB54*f% zZWzMC7T`+pQ(OKuPa_f@-W0fd)#?vX>NkbMo*K%@&J6w1uO@R}=DiIir?s^w0>aty zlnyIPw9lSr;GjLW%gCZUpIN1f&CaG$F4lOlXZx|!JwJjV#K5ue+zQu?$PA^v^g{ zNDU2Hzr?TV{ChX}m}^l**pDqUQ!(SaCX&*qZN?}L{urSK)7O%h)56bYo3{O8F#EnS@gfPP^&M9J@0*aFYDd1|RsyCHrFg*{%Kr zIaFl0E5A-zK;ZBp8rl;*#V0=eI!19+Wm(urc?EH8BWxkmvFh`%`|5nK6eRmQXS>)2 z?ZM|9Bb46WvaiKVlR@$MRX|!$R8u4M^hC}0_AQw3l_$=`v_5;^g{S6d&)=j^;hPLvs^T zyy~DVc^#c+pw`nt@_>rm&u>|^nh6OV9r;go2)X5))?KI5c{nxa7yf#kq1r6=c}#ci z@|eiy6K1uOASpFhTfNfJ`J=GbLw%JPKZCh_b2tg^*W9tYy1GFy7yTrw zPwxBgr=K;Pcgw+=%TJ$>o(l=fS;T{>$Dhrw+u@n&xwYGhT3Qd9nhxie>jshfDr+9M6^2LcZvQzjX^B0+G<$%b@R|{qu0+rKWK`+ zA16^FgrF6&OoD&^kN&1cR(Np!`rL5;nuiLqG(R06-h- zt1}JrX%h%8jPGzHumdr@*VZOUC4PcFwjbZEyALkC`I%`Ag~$f1%d>&+@+0=*a^v*Y zX$@3YR~}z=4A6QLu5{pWwQq+Mfk~PcxZB)J8O3SbOAyNMt@sJ>>>*$vwcXY(oxY*%ROS55%HEv@`F^GMIg!Tkq zC6Kbze(9IT(fYUGAe?ie$=B}A+CNk!0Vt%eNH8TjA%g1Yc?IYHJRKe&-nHCZm;c)& z3jX@_Va8aO4)fk(gu?!UFt`(iV7q$2hf%zYOw|NqqnCOkd76PCJ^m%TpjGbN@=H{Z z@)$>8Z?nW{e(Q=J)WpNg#+2WQ2?-hbRmSLZ1`xCF0C9A6ki1pKBS1sw9N!~|{a0~vMJrBV zQvWSa-O-WS+KDWDv~U32B2?Cn35m>pwzi^iIcec^V{!*)p1O69k@kPaPTShjgFOk9 zxVR}Wrh9_OE7evdAOGq}eOHo|eZWzzKVEzIl$)n(e!R3+Rxt)w?Rpy*@eFHf%=6%` zH=_Ov!io5rM~h68%iqUod9>zP?G`#%8gyW%1FYU@)#@>kMbdbe`B&0#UC=sHi~g;a$x#-CY%_l-j=bn3x?XX&nB$ z<8LvQ0~VY+^Rqnjk2P<9wdpg=HV=T})*w9SOrh_Ma~M;X=W>}M4_m*9lqP@+YiHQy zeL1<0dk0CMjR#(baA({bIf=X2D5My#Vth#Sdc1Yai5Hakg`T#>f1-|~M2nZeBui%; zA(imOB<8!pgdpWzP#_=jJK@dX!?6-n&$52l?o42A{V~y)r@lDM)BqMJ;|(saK!5%& z*e`$-CIz^;R5#Yt5cI?``czfD1`8fv(7gg9x}w=Kb~ZLxp0k)803|pO@uX#7xQAq5 zWb_lnR6)TTG(B5Db7g~ATU|ZauqTdRLIM>`0DhF03)G6w9c5P>_wr`T9rttNLAq`m$9&yjL7O2nY930nvqT+ROBsc-G5 z5rTLio#5T71FNhV?wW3(^9s#6Hh8gtDW&h{&;LPd<_}^d?*s+!f@1lG?S|itF^Uv%e(c z(osQh{;4av?6wR@-2(GLXKP&h-@*YAc!vJlh*UvV_FiY`zJU59 zvPRQZkZ{QReV%IOQEs+UO5LF$-mjpY?CSbcf?)>A*|RfZ2u(8!U@#x{CF$ZntJy46 zhGGaI++Jz4SkaCkq52e5Fohs0fkTQo2JQ(cu%u(oCfbD*<=lF|dC zfwVBE-C6K`og4La_wZl=Hy+TeuAeP1l>4mpEOh4WeT5zn_XRTf0x z-|=r@0b!u_oa1y(%$P4t+uWQ1A@$D3$G5b)3W6z~tzZT49}<`Yz^~6g)Ls7-NkPEp z$qgdEPkBzJYwf@;stZ*0_#d`{UhH|(3D}4Hgby1T8|#-L7@&7`wjUT2#19wZXImQ< zG4a(zfNFtm#ms2tc6b#R|3uv=R(7`1c>SqN#@O->?;V-61`+uv1LX*C~u6>b*Kh748gw^UTIs`V$_ zH@mmeAf$g6rZaR2iO1M3#M(~;#A3dD;SiFtc>98m4qu&QIG2nXs*R6IP$9;nk<^6& zp;7pq92Pd_Udqu%Wia?!R@R_-d3g;@S66~=9ta=N?i%CZ;2^Z>W(UZ4-JcmtsD=iywqbr@VKgY=?0ZT}Nl_t*^7H=}6cIs#BQh!j8n=O_619BO2I%Y6wfKA;DSEnupx&&bFKmMSW{=Z&DYiu4RF zWy3beQ^KzUrOxOnKCR8;&9Sjs|LeB+9>d#FhJr>9m*gfTjXMtIoJx)>a-X(HYTA z!1H(I6&0WF{P}gbiej+#$D;k02@VR13&oCg)029W2r3jDqGYNO-1*tYo)&Gd#;#1^ zZ|X|uKCPd=eR~Uh0u*!+WPhJaQ9d&TS_)_~)9rSFUf$k&&9xA9E ze=nwBWPA)EDo1+=YMOuXJ>DG%yWwSWdSDVo`j}8aev%-t%`d zmlG4n`1x#XfP=OhEN=THytYtpT+YtP0eh-~e(eb`SZbU4J8}{MHX<7_h2OsUz%?1@ zmw|8yYDz#HG-EdT^QPHXtC2rZM_6=M-uYxX zQ@4M^NCV3x_wR#uOGf`L#OG}*i({EGTlTEQ3=OkvYwFr_fiN8{QfTppv70cR=%m2Ax)xy8lDFWtqBsVv63-fKe z%w9L5wDciHO1l?u>OrbZB7yT56B=ck+Z!hWzFArGefN(-Ty}V)S>vkn{Ut}6C8u9Y z=3p9hWZ|IJ-|vGka7^P4>I%ei{m!&o(!4Ogz?wC>{7?a0Mq1~s_inD;X4~pnpd@o> z`UmzNdpF-RGQb;|74h%9M=&1Qt1|oe@pHEUIecR{tohYfpqx1yUz4-3nA?DYL;X%# z8XaU!0nd+Twp)>$MQ)P$Xlm-+XG8%mS&govj*MXu5vvx3d3h%Gmm*|*fgW(%p)?F| z9T=FMB|SMg`Da^u2GTanwo9Ur9|hoYK6vop$B!SMN=jZbY1Z9ya&iKp@IwcNXf=+m z{(;I&p@6D-uR%u78$;`V1RNB&$d=Jy&P1)KSvCB`1(=({3(#TewTIw=g9N+ zrOos%5f>j)`b_ot;JDqVD0dAeerIQL=u&LX4`BU#1oq&0$IFeWx3(lHGX;^5pso&p zrc+K;^>d?JGceqII!K1_5j`gJ{{F<;ut?=P$%kiL^$($cxcB;FVwEEYyl!%4=7v#2 zXy>1^AN#z+*7^yGNH51HCUj>TToB^bAU6)e333{Zu9dUbQc_Z|ogxNIDgYS>K~Qzk z0yJDY_U7A44Z5+HR#p%uT$^JhB?|FAK6j^QX0V8eLcq%fc)G;l;o)$B?j-kh_9b&{ zhK5)bHRb%iYs$wAV#CPD7^LmMEMT#kZFo@P7aorOKAac@0|NsdE;&0pZdzIz?CpZG zw>ku>gZ=$hs0*Nv@&@^4#NC4*ot`=e4n@GLdC=a~^(`mo0Wmr{nyETr~lu3sq`%^rJkPlU(8MSmQ$u~FqWCBB{ETmgwN71XGKo z-EAaroDwjfuEBzusvQKQt)cv|-~78>epp^r0N#sHfa#E&Rp5D^h! zPLvEK<*Dn}=1k^v+@7q2I{N__FS!(^?Ad*%9n9D+w!EsCk?X58jeT5DFb*RBk+PeR zH9%u0~)%by3DX>+MjpG!ibN5scr^u<;m zf|?q%*0z96sEr==rkeSI2N0WPLf~}$DF>n^)6se3xMSbBK0NnMN=kTI*Q2(brw8Y_ zBqc>JGp8yA5L=49GJ3j#pwF%E%dFy#3;-^55*Z2V zSo15VdiIoVSCsq-JN72OUq}PVU?jN!X6T z6liED#__m5&ie5~(!`;?(+G>ba+#8wTMQ1~0(@1A5CEwb?f@tYg{&fMPI4Hm%kyQH zG^gd|Gt&J1%hkOz!yzgunN!ndCJPez`+H}pi2o%7Kb`vgJX?xP2!$xM;X@Q9`@$WQ_95Wxm@zRdkC< z{&2_ZmYG4-8r$DL8CpzjdO&y(`!Cdz;On1(~&+eVD@O>KTl)P6i%)%(x7ETU>j$>7T z3h54J$^k(SeR@XZs|5Z$nn-EcP+MC7i)yK!x9sm+TDh;MZUsF5Y*EN56l_+d*>;ZmZ^`xH_?8Z?pzRO4$6qh%KrjGB|j%mJuLdb0X_}(2@RAPK~yLQ z;9gKsS&w3%w|(n+NKJx;_2O(k;Kd!rQwqDoS!OoHF6i*B*Zyo7k;y#dmzGAUb5g+* zu#ce(2@J$kRkL@o30}akaMG^2kNSS$Y(HRczcwO_$Zz!?5z2gC=38`Id!@e z+=Zf|qn3G05De9#T~>I~Y-(!yZ)N2H6%`feNWYt&4-`^Je>*vJ4d43ty}?1ky_2T9 zG`Ve{)Q#Bk|BUF7RCWBgoc@xt+R~$wraX3Y8-5+F_~?^&6PW>EnFCVTsPT+Q+}Hut@~$pIC9`1#cL;w2O~Ya?O+zj1gKXK!pwQb`yZm>}0( zR8YU*ms9Nd<0w*TTwELnC!jwa14sN^vz|^sri2TCFF$!+;r&gJf`A?Bx6u0Rt@II< zw!cfKiD7<%7e_%$3(Sj@j+W1Sdeb%9)_{VUnAn37a`4#=g5%x>UWWP_fQGsxBZbN85~>}c#)i$bg(~5h=uhZ zNSxbm(Vm@4Y%0w0D9NYMC{A@QV+#pq|D3u+*U<3v3F^i}46>YdS-~UanMPB?6D+I` zHvd{cH$H)1O-*b1ImZV%xwqgXe2*xZ2fFLdSo$=?#EE2d==~oia%^%K2Eg#g#0>TS z;p;8KvTVDpQ3Mne3F$^ux|CE<5D<_C>28pa4rvMLPHE|oknS!40qK%XX^@cK^M2P_ z$M+q3uVeps-yhHOpcmJ5o-@WAa}3tfH|VVpjc!Boe3Y=PJCMAHxTBX>?TF9T6doO4 zlCob}dzV2l2zo(1J=iZ{?jZDek~!gzd*{5#jJ%OQ=BfMNP%fFYYs3_;y~gGaGTVI1 zSGq7tg1JpQ{IQ6eIlh~J%h*49t3vez@Q?Ew8s7bGzTw%Ob@fNX*56+gCK(-7eClE^ z0Hw)&Wo4HS>|RFnKPS6?N!^ zKmD-{K>ZU#WkL^`sr(t7nWb+f%nLj2XaL1Eg)6*^@~Pm&xP9A5D5Th?wYBxjOJ{aa z>JADH245<6P*BQL$dv(WqzApdW(IvdJ+0tB_!TlXG~w<2{g}`zF2ouDUIJy50cfv- z3ydFluY+GC5)y~W0FZgu;6-UZCBBbv=|$2tF+scIbBi|mE*RK={~m?!dx$Qsvdl3)fW}q5!4=P6lVpMK2_#K+u_wV0-1+OGk zShlLsw9G7NhA6>pF^R;)#01VS1`91-=$M$RAFMVVtjsQQ6YJ*E;Paa9A6xdlufHgp z(E=Y?cs}r0xsQT^^3m1Rr&aeM8yhy#SE&8L+w$*;tfVBu8y60Qj!o6czmqu`2m89# zUJ2~(a16RLpwEVFZ$Cmn;n{9MWz&3M`atWopLjrW;Pr|FdXUZ1 z#>cl`jksxEHGV=M1uzpVRO?Pix_J%W!xeQN2+Sa=`WTQBaTu^r`{JOXp|R_CpdX&> zXuOk?dkt=eLV)hvrS?_T(1-@~B@%piz~@3pG@MeJRywhRsk@`Y7X;XYU%H-zfaPT* zUvnR|7r@k%4%0xI%BEk4K#lrv(6mXs~C3j#UVpcO+wCVt(+JqF(@!}WobH)?7Lh_3Irj;HdfxrAC^;$mcy)V1-9 z3!IwR-OrDVDcaelci-2Wi`SQzl|7P?k$J+$mjo?Bw4l$O2S`tNc;az{0-$WJb=V@b zx`Att{0SUz_6bbP!>q!0D)_0Xt=@uH2tYDbEqw$1EYxOZeLb0C&yd-YaMR-E_C)?P z4-!J70`*V^?@Ur159e4anXC4glkC-z^YFCEwAdwoGe1qvopi(z`Noxax@`*|+1{zqaol65MBHcy=hD zuH_`jzYoS9Uf@O*v9zQgm7FYv6ahBNgD0*x*RO89hR^5R?0R+1b?Y_wBcW4QVsAlF zKgvLcBrYlW*q8JA_Gu;x8Ws)_5z*Y>v3u)>ys&VpFt9##o_RrzB@at1;9JqK3@*$A zGpP{~uYnfaGBY=MY-*+h?`COpQv#hjtE?=_9>nA|YplIWT=*NgFH`&ef54)Fa0Hrk ze!R7HS?qap4QdLHrJHsy8`!QdNVy#-HiL^wPw|_du#~=;nT?;_1^a0L#8R%TgqFe5 z%Z)DXUtl>`cXhX;Iu(|`r> zD^h$#EYMO%nDG~oR@qm>TH!mz7plEu-I1@&#qelbC zRrY_LXXSXj25fk~d*hEo_q?acy=Mh}vtaWJR-K=~>cN!27 z=jJUy{jFxi3JPwDx9Qk)W<)B%vb6Oa1sVCN^}=g z|1U%e(D)^a5oq=2nky?SZBDk;Aj{nGxr5mT_9eg?Q`>`&HxEG#^c8TxZW$dN{ZmW~ z{`St!S;4x(WvXPg<;{R3c&`5+NQqzD6OdkQwVRz2EF@lD7%WT-4GF5Nt4EjcHSb|~ zlsLI3UZk2~{8u~&uoF&++3KExKpf>wc7+0M^er(lJI#iF$mBB1!bBQ~Vhb17 z_O>>w2-iyU>A?8=yjMIY4NLwHQ%zZ%J=_ae=1Qi^4iC)`926is!0LjrRB{bb^UXEt z`T47bWezl}`D`u zB=|*(ak+*)E4(LN_5^6+QK+*9JgEjBw3zfcOwY_Luk|OPV_>v@d1in>n_}YQQSw~f z6Q?IyT7W%4xPN^78I05cYN2Lf>7OV~(Zl9$SDJd!BUKrV7Sv3PMp0~TFuW#Zkj9?tC2b%On~SH}uP?m2hQ&qVIZzI#V` zecFs>?RX;E?6LLC^ZG8rincT8?#IiID5?CjsIUbGEhjrl7pRQlZU$e4M>z(#Q;aY%Bf0Em5(nZtzOg^GXQ&>h7Xq=Q;EyXS&q}yR!+oZ=1Wk#dc_yzjD!9VXX%^3uH4fBKTb!h z_Yww!ObdTqH*?i5q|AH%etR`r@`MEDj0CYkuUswlmpU4Wxwq*)I&1lRdo!PGCj?HE zR4-nhb*k3Ehvq0yhVqyJC>KEZT# zWj$UffzwFb6-wSGJQ88qIiECGC)!QR0^&&0$Z_HIU}n!r*CFfgFhQ8+p}rZtL6cOt%C zh2!RmVc6D0COiqtFI(3mIYDFN$k%;Yd48j(7WuLYr+zt{Ck+LAspt9QFGqY2E;H1N zVV^Jb&BSnZzqrGEmlT?=<608p{q541SuM1z^NUy(jiRsnlemg$MuPgl4lh0Tb0cOyr zqa$Rb%0@SJriTkJR#vk+*-cM#>zwui&i;z&-&||ZGn%<*-vg>iOpGEd`#C)dC|0(% zwvN`yX*TR{3B+H0P_iot_x45xq|$n+Bak;5O<@!U z9}~}~cj;|_nScYtMKNj2+|EWnf$ReHdUh3UZH9`o@P;!{r_m(fx|1wF*wp0I5G@ z`WA4i(m0NeE&E1OlN*a7k>yh!DujPRCgn+8#59V-L^Yav-z+zC621FPbIr z$DZ#3iqspthY0$X`ywYNZ@Q-^m#=RFfvUc^V0zW5y&8!$GdxlP;O6iSeOg-f2cyLC z=tu>{18JlA3#931JC?g`h+nFbt%KTEzytSA3PKv{4RUyI9OcJ>*-%QMqBXY_svVcS zrj~j4PRe3x>67`yql14o%d;^FQg`Cm(mr7jX+H$c)0+nff*3xRM+3Ex5Nb8=w-|gp zpqK&{b+=F|C?jut$@VVj5w!;qnCKZ++?9;`cMAzVN9e{z+DE3^p{#dBV&VFFR?Soj zxs(VR>aAOpHMX76w6S@-i1{p7FrzauH7dtGz(2YN(9m<;h>`wBMnm$6Y6iW;<=KL!f`*Aar_ zU09f*e5wkHlqA6EKwPa`BD5c8s%3pDk7W?#V@gT`vftsI`uboV{_kXF6_M9hP*n|sn+Rht^1(DZD3NYQ(~=mh{iFuin#k!R zF7)TB+mkk!fN6gR@VwHTN!NJ%Kfit${QBEKURG2duP{5@_4U>C^`~157a+X*l)Y6! zWzUyJvP*w&4#Bt)R4BLextN|wT3YGpMqD&+@0YE*PZO1Z*=c9q9{Ze&OKNoVyPQ`4 z8wakfG|%#{U*&vuXZt!Rw4*aJ>xHxs^4ZEkd@;rh43Q$1U?E{N1w7u%zn%gAC;olkmme<^S>j;!|Lv9f(_W1M$ z^YyIwX>btZ{<#CGcC*aw=({*=E!}4cB==v7`k}md!M(CFDW_N{c)FYY-q?Hwj{dc3A*gHzebsF`%qu^=a-1fHK1fnh>!tG{WiVkV?%M=g+u^)|j1p(p5lR6Q`5iI1 zEdVfqejGWERg+(GGN*;b9o?R&QeuuA0afO6u_D|KoF}_ict9^B<{3cZu`JB; zT*&kLnIrWmplV4Bfq8qHsZ&h9PE|(RAw&bg%`aTC>D2tp5y4 zN+os8;|Rd;S1OHP3nxA3XSboe5&?zX+p1=^4A$5cQiW z;8kPxX4UH5zjimlC+P8RZ80hF+!+jUnI{?^{yo^#fDMRdTwGjH&^KzT847AH-KXg2 z`FppGKV9?~QKRM+7rU4A_1c1V(&ry@WF#a(KYl8r`nRLTYb3oiliG2qkIm9)2)3&;}pBqYWn;^KZz zib%t>PA4v|?%!%W*@ATq^4X!1h74KVAB9k};I#6*Dl6b@{2H}**(!)GsH*x1L>)lA z5*@*U7|rv5Efj9}Ou#)*e=}6Y0$4Dj&*kSo#UY9h6^{-nb=s5qPZg0a|KYwgbD$b* zAs|(JWW^UkXVoc|Zg`pyb<-*hq)2UTjs;-3vTC^?2pX8X<`#v4CC!w6EE=q>)9O@O zb@be7O+b%FMn*;@Df`8u<#LCJ)fXj?;?58KXYgdwm_)CybTrkNX+^_#{SCU;xOsJA zv*=li-`rf2$tkpV6spZ1q|nDa0T1QY$j7J7fyvX9hV1lg@wcOU;B~ID#IiCmVLCVv zAeg;P?ykBJxmYL<37}r8G)Ixs)`mfSj%y~22c^E~g4F3<7!6tJJ`A(bZFk7`TE@xt0CX=7sDxpIqy8*VfWl+wz74 z1(DnD76!Dm{9VGz7X;?!7fw?)=oeZRpUNvf2`^(8f!2-oH8fEH)WQ{dmU9r$8g&h` z1e;Lu663ZWhHu?nXJ=^rsI&*=$q|AUA9DY_!bTMdNVeDUO zHugp;g*Rd#X*2+)YoH$2T55nD8L#3E>lSU@-I#zbbWo6viHcwI3_G$u&P1$6G|)IF zZNXXx;5reL;`Lh`7OGS=wV3TW(nO%`rju8|?KU$1y%h^E#Zm`z94zuLG;Q=ECI?H; zz^ME-IyD@r1#8lqzE{DWzM=g{mnSpi2m&F#(H6{vy(6aeG-j%9gFrYQ3@(ah2G{zr z=$XE?C2+{Lu3jhYFWcU&`CWH6t)PGuCZ<5dAcA$GqC~MDKp_VrxZX^aZZd2OfmYDa zDLQ;epVk&gc)uq0sE>R(;w9nEVLf{E4(CDSJ)xS2IAg9v)aW>4AkiS=3hbh=#hpSq z_DWBG7z4IEye>>t3S1DAe2N)tett{b$o(JvEUgu${*lSa*k2vFUf8x6Ke zkX~Plr{2tbV+HcbM6n3euM@iEFLX*!jA_$UcalS%YXmIP3ETvg7KAC{~7=U z7?<-mp&53Z?~2B&nx-m+!S}u>QRmN6ClMlNO+HD=C^L;l*_{t>ovvJ8+?v^scn$>W z?djE!7j|K7LpBc)D@5>NGNHCo)!14*SbqL}D%7*ph@Avh;D}*1U7ar;4g+7*V5OOF zbOO!z-QfZqOPvNC6w2i=c7ct-kWDjIWaPHZC-J0hhV0+n&U}?8W=k`n5Ojohw5D3R z#0)qJnOn*CDe~Wq7lhESy@tIEVZZkVzaD;2Ro!SAtx)-f=R!jAIUwL|D-5_{uqr2_7h*rve*>$);cO$mfSe@cX4CIaamws}gz;+WkLNB*+f1T?E@t*i>mRfQ6jbe_5)e85MO1 z8w!vAon76ASBsd|LgynSA|m)ZU494kzk=I?(J_sa)q)&9AM=Tf?}p;-Ooif%w{Met zbngEIz_m11AQ_}BEUX;FCJ9jHy`rL$(H|3F$_^gDen`%cJ1lB!??~HhM3^UCL{Q>I zAIr*;ed=FB)D(!tf}wB3lU{b2oI3vJH`rURFwNRZ)J|>-u9%2ikK!(b1 zuQEQ)n7fYH`-xhaA#+A1hxM@;{`2GFg}o8G5J4X5l}nk@AP|7i-~Dd=6C zn8F(3Z`z#UuhWF*VYub6xAxw=dOLU>nCyTrcaP>9BZo6K)bAndniWiK zI7~Lp-ZkiUS%iPEuya+3o{5i%<^NTKhsN!nobujNItcqjL>QNcefI-5o(*ZjklDdc zbZqo{sg(|T)dxF#14Wj0{b!3iJ3*in3FMtGcl@&fTk4AsC;E5=HPB?u5Ei1=cRQmB z2pd>9zSe#E$qU6*SXucV#A5`Bu(-Gq@0N)P5e$VNz|zpi>z5CJsDm6Y`89hCS@6Sn9Jh*{8|MZGw({_RLA}AuVbGQU84O|yy zEygB2t27CTULUZl`*-0lsI5&pHnu(JxBDzX3c-Zo0_98&&+)&p$uSt1zMsa~WZ{neR;Bw1zIDYngkcaH-w=oElJD^@C zO|H)Zzzw{2$biA@Rp}rALuJ*D$a|FWlGd=X0%OQWuonq0I3h{oe9A+L7Ny)oLw|kX zPtkQ>X$@p32tDXIea%cfW>2w7C5eJuGakpR}yYkR8%|*!S;mkUoWmJ^)(I^wRBnsGs|2fC7W~ zT8P!lVl4vDw7lIFx&_3rhOKQTnoeJsC41bs-vR)EK%v7S8`w!;7!234FYi|8@~^ae^JC z*Yb+dhkqp>;NyGs#p}St_$~!suK^_OLM=X60;=PrZu3u0#=X3DrI$%{3xVQ7D*3(d zD_3Lvh1V=L{-W-;02cTOO`baE;9DCT8sHptg;9KP?NKo`CG@!H$Hb%E?g|&sHa&7f z@OiA$xwtLReQRq8?H!avi1Qa98iNdqB!KB;ckk8`^Nl05w)Q=>{z?b}7U0RKIoE3d zUl4;RtSycOYYDTCfZvTC(2-7)W)pUj$);Dt-Qk0H!iq(7kY*He*FcAi=gpg}adFmX z#Gk6Gfo{`)X}*;LAj302e;KAsD}50qO|JSj-=b9i|IHA3x#((;8d}U!Lq>c%`TF!tP^h1a+ky z7ncL2&mGgpki4|D2Z)~u$$nk`tqJHNtU&sM{3_fJL}dkgyc6Fmxz;clD!>0~1#qsR z7JTKDykRF62$%J$1~>Fv$0)D^DE*Zd&Tz!nm>Q97WgD9)={b| z_1@g+bM86`*!kSIvpe@v9R=byV4O|}qDyOQMdvEub>28I#k=jgmq}mXo|l)`1tAe0 zrW;nsd^+{pdL_c4WRzmlezLeRA0Nz#^2%0T@r$bX%Xgj)+M z%*3RYh^PEsW;PdJ!eNpMG=$)Qkl*91YiaPq_vYP}gWLVJ$WpAJT|q(fM*%dfSo0tz zU@YOElDaxw;21Qa;NjEv#^LnC%L=+tnL!en+D-okY4DfjrNgaqZxQXs=TW@cVY zt4+jxKopM&abHVI36V5geJb@#r`F5o*rBx97?&2ephCZy;rj!KCb*y8LQtWfa^J#*Nk#>bE0;>}gD*p{JZ>uH7`7*#OI{HP^jfX_$UoUy@YW+?%08SQQg2BT2n1KPi-S5gb ziASYvQdQy85F|@wC6)4n1;P991R&ss4@es93S$F73ROd6nfr_x&%c0?8{*Ldd|)`# zzLAl4nyy`llT*;DYh&Z{9b1C|_@L+J#>f=iX`8J#Pil-QiyqOl-^xLyqT-q+q z{&*XBj4+X*LGTtAJYZ22ni;CDkU!z@wMB^a`YxT+WU>5FAX~!PY26%k$k>?0m!zA3 z%gc9#TINg<1f3l_9f4v%BkVi&U@$KIf?yGbk}*vmMZ{xM^*%M~y#-BxpnBqGSSyImLSzPFjq0$n$seIrVK2TKWMY( zR|ZZ(uzDk!bIGBifDHWs^oRKh6A{$Yz|<3F)*837leE5eBfh*$1(q5WoB?ZxN{d5b zWob+_6f_TPVPOZ*tC7{`AMNU1Zy7px7!<@vD$U5i&_hjY?2rB!uW)C^XK~pMThnsq z%@E|T&qYNKkU&MDTD6%UR$9hXD|_$!T~ixc#CZfv6$97=#2gwDsQ#BICYsYW?#Pz< za%yz5HjzHatlrG*`Nx0XxfAS{yUb%^m0DpH7ZSvmms4M`;y?HSYcQFYAn4Plbzq@; zflvUDz1x2`RM!Y+Hd$zMrZ9*)J6Hbw1D|QMaG9O`-odsSvP|;(B;f$kGUsv>NZrqz zcAsh1S0Qh19uJZX*E^|@zgY5{Di3dI`I_6os-ZJqmWn|bVsW&{0HM>WnId%4%(4D0 zQ<5(1)nhaP& zru2nBS{MFP@M4SIdoc{Z-P^Z6MBwg~pvk+rao7Czq?@R!=J6^mrMQE+2}V<>%}c2T z1-M<|JRScI{E$8YmfPSQ-4$#C6Km-1fl@#&CGD#B182w6@7Evn;}R2j`TTugCBQp@ zJO@Kf5}DMBB|beJz9&vtP)5=e%(%nh$jVY(ur|YE#k``(qiN5l={Y}+KG@Z|vpai1 zHa_ms01M~{83!2X>CZRez~a+wh!w!VbjkE|`-<8QRTXRqzZLJXI(TW**;(2CRY`F} z?m19Z6_rX47Fy?PT)1$dC6<5p4x#w~bDl@!v3<5?ShL5SjKngA}4KHW|Uf#2Wn zBJj4ZC;D`G?AywnYL0~aN83|()6>bOFE3uO6d@fR4omZ|2n#QldblGEk6-}5c4JUk zav6%3@WI7np@J(7RV@#6W1=%g6o_i?fQ?Bg%WB7CatF`#+ z!Wl|DR6Q10va}=tB13J!3*Lu8JX1#)fvW3d? zWheYk1m-rd75gb^#u~chk-7SqtaRbUjvkPtt#_J-HU60-hvd+HO4u=J>ofO@c!XCn zI*JWsN2;GcE1)}kIfq(*d~o#ACnBP{#?9HZ+#m0rIt)vo-duwFkJu=hcQXhz9r@Y( z4|@dkqQunHRy{q0k)F2bK7Gj2kL=%m+rPaNQWhZQSv76=wNQit@8AM4M|L^h^iJSl zL10mNd7Q9XlaZH44wXD)_~m{RLqN=$-0Q3JvGJgmxVfJq*#SiZVjs{K2aebo-H;-m zuZ&JJn$D{Gc8dLC8wP@Po5G7@Y1yv#K96;U;{h8`4gg|bK3t9ex1Wv=n_il%ULp4} zEG-`+*48^I^uIwKp?*B_agh5z(gFuJ+p|uJit8gS2W$biF&u+9Z!ruL2!`l(hf$Q` zXfOvR688<}4K;{cly(ujhOl%IYA_E4sCpB~KX{X9A43~(RCjUhW$`2l(ZD znKDc%9N&A7`S`G92X$pqj~2Jp1lT$3N=r=x%ged0E;M@F87+*W<5gOw$~{2+J{ss7 z8EWO{A>^jvNgDnt#cS~6ubDqb=VoOcRkP}Zgh;gwviXSwC-*Tho{fxKwhg4<**MGs zig3*rj8H9_< zyLSTtM8kvqnUUJ^XXPfRZNu*{%*|7HJcf!lMn_4Pwk<--?G_F5D=IA9+%onL@3r?a zC5r@yMS*#U#(+x98`siOSd+x+4xiUM-TekmZf!r_rkwq~cxG$px(Oc0R}sA$f?mGO zHzz<;<%Z+_-MC*ZBO|J(FS=p$Wn&p*|6U!;JXu+*KnbvGbIg;&eEb#&9`+orwo9ZW z<4X*}pBEAF&uLD8mG!oCe{Z9r0*-IIk3_HYr@J|q#}iV8MI!UzM6X=dc*+#O?AOcU|bmuBH^}<{Y>ld zzfxFeDN^EQCzun?nxo_SOP8aV)jnA;!lXw*tI8jZKGesGWYO=o}Y4?VtFD{P;0fLqprV z^UdU>N%rnzI&`5<&>tQ6jByJ@)5H7XeSik}tEz}q$9*jR7RvP3f^)}L2A@6Y>UU;c zQmG3#jC zW@Hzd&Fu;?mI2l+PYZh;()a4N>r^2qOUL85tq5N_t#j+1cFSa1-|h zNm{ypseVreKpxOCuFEJe@e<%$b9wtL=K-D1+4(j-14Bkh3FEi- zo0CJ|hk1%viy9h`$;sn}GW{7OlEY@&#G9!?$r4b0{ ze{o5lY43Z1@4RR8K=u5!xb^;_QymUWAMoH&lmoL9z2zuA`*!?2oj-*a01zO(*+jAU z`asvwrjbmE_S)DkhlE;$L^dpmb)^ey!`@i<@88JhN2R)>^sc;)oP~-zSg4D)^%;_1 z($HiZ=zdk-+-Yya1%336>Urff?DvhX8nBzq3bIB1dC-kAUA)Zu#$!0&Bum2i{?&5V zRWBUxzN27edwceoDlKC;Goyw10l~qrknQAYdLF-T+|@-2=n4)#zD7QtB-;tr;c;je z#H;P?mvFH|^Gz|-I7}raciyoL0fp7LpHw9|rRdA6i-#$EH!VQ~tVg>a4%SkbY5`q9 z+~+2Dp0~1tIZjp>Ae9y3<3oM-uIayXQ320JP#OCb4DS{w#NW$Dx`&3)H8fs@gp3v# z68wf=y`%Hha`~Wk>Zkm?Jh`H13AulyH8qpNwdF7uPhRL_JN?^DH3y^R808{~8%m~z zpTFcnLqf>)4bmDF9`SH<-*#~5vkidIefTi)ZLO!k9VaJGFuSLI@+1{7jiE+YbI@WF zsq%wlPe98TiWX|qnspE%L$q+Bz{8I^t-_7Zlpm{%`eoH1*vP6iu|7i!a3P87s4`eR9Vb{gR!UU;!qTEi(( z@uyGS7ISWq%iVili{~N`p%Q-3VM{qBUx7;9=Z*thp|^5!w@Am{gH4_S4oT zx6$TkaZO!Su3EY0V5pfHIv@)?iv zdi$7k+wWk5$hJ;CUMZD#ff>qp2^APcpTI_%Z|W-*jt}ZQIkJ1;e-e9f`dZuG0U#?; z5t>E^eFnCYPrkm2Lk8kFj5Xl%0I}q`(?FU+t{a%jiHPMg$jBHotFilHQK&aMMuhEy zZ>$>VAi85wovii7;wUPS{c3LJDlT>e|FWI*$3n-C`AvI;Wc zpjvDD9BvXc7J_y5XI@I*G{3zu_!kgBcX@pgs*lN7Z9yVD-xQb4+dTG7rCv2H=hE#i zHs#BxW7FxfRb0vVR3Wum!nL);$*DhmQPQz2FPx4xK2QqC=uKC|e~a~vnwlX4!&q|1 zow~N(SWlakA0OhFNf3u|l|nr`v!Fm|XIcW(Fb%A%_LVQ-9Y?0I3F_!5hTattfs+9` z=SVMKQd*zc;!I6BLvr2kp-b7A8oB@Y@w5AjTB~boc8fwt{@AW|*Ow?}qjFiYR2YEU zv4@3;jvcxt%e?}v+hoWdaJ1;*<3Z|#!wKIfEBW!a8qv_QTv1GswVy8n-aOJ<6k5lP zZ~T&AY71$sY-RXlXIWB7Pmy!+!t`=Ke}8&1pT;e3t60H}Ff=+W%pSV}8*Cq&Rjx@5l3Q9AAfNUeMq& zsFe79ciMBfKJSZ%qq)2}oochp+vN1ul!itGzE5ezsPR&V%iv7^ z0Uyoh&xsFrs(q|&+3|KL=3pZ4Yd%2<0tys}2R}Np*xtcZEp7YkaaGtMcQ;)fgveir zi}ySc&=DHR$<|PCz5J&IM_$(?S7jhl$pVi3XhC*Iyw2|9XU{^p%td4V-JWR^3KsU~ zhbeebO`Rp!@X|K2Gekg%d9dsRQzoBZzfkL(cve?>NG2yMnAc4d+(Aw0yXz^}6Wl*& z=I>PDmtSm$Vq8dIhIPiLw#Y%dlCX{@R{y%;^@woU9)gYW-0aaz0$JKj3>}rEn?{@p$ zOBC?CSq)}OX4JA()~={b!l6hx8o&7LN1IVRCwFA<0QE)Bj~`%*;$KsLvAnx0>*mHd zJq_~MQ(p!J_NdQkV!gh8eXcg2_3xh|B#i{le7ttQsopqT3?T=w1h9>YiMb`W8I%n% zXk&g}Jw_JU2dx^y_PN_(kId3iRhjz*s-og%Lq*Ex&xE-$?ma&uH9$q@6&jYCy2Z8) z)V63?zYRxnFu;k0!&;XNG*QFT)2IF2c*mlktX5O2eIr6MRAzLh+3!)x78S4Zd~WW6 zq0#EQYD<=%KRJWBCW@J*)BNw30>i+cLBVl(r6N)3n;(bnYcgm5<0ztU(F4f`**42A zP?Gs4X`t1*|1z6v5G>`FhClk>S*P`uvL4C_m-+SDRJqjVLR&l$hPNH!{#f z>tR&R_spT}KAgp+#b@!LTwCgLtOowb5abFol0#37M zWTbf6o8eHh^tVsm!Bg7UZGDQ4CLttLk6rpJBSMIe-wg-sxktnPQn;5FqopMUF=t-U z^Yy!9iQbBgvAui&n;UEWPhmMEq28(4)!>gQT$ix0z8AKJycE0*TH!tg%nu(zsZ>2& zW21Glo1)2VdXzCai7y)VTS8fx_2NVtMnnmq_*>>)PY2Q(kfTf>Rh9hKp?8HEkC>$2 zWPRW+v;^04r}2r2osF(TADurhZjrU8@I}IxATlr3s!@~(=Kf&MO+ba_~ zH+qxb9Sb#IGzdxEk(81G?NBx_tOSMUC}!vNC4G&>BswCc3If{1wi;)Skc|yP*vxpw zH5Q}9>9GC&EqH2sqt>}d89v zB~J$WVKS+3%ok+1Uv$C}vlm;_#)0xhcJBKALTjeJ!nC&!2ALPpu?XX4x`AoF7Bw#G z>grDt0dT7MROM(;Wl6zQ-Akx5{~q4u0F~$O495>NU{(!2Pho&j{GdrK!=<{}J{zuW z%UL+x>xMeZNcwj$V`6XJlJuj<;mmGEIAdpL>qAD4%|bT2yVsx=_TZgDc>+f+52W*e z(@9)JoY|g23kXm>R&HKjTf<0rQBIfUHk?nMiRZg1@+fj?i>!aOPf)WC|HsbE130#Y zg%#j{$2D7@q;Hh1r59(fVtngX_zNf$;HB>G>v=OLj5d4fv5Pl!dCUFm4RXI*drwll zCri+0I=dkGIdmO!jVv8#bGYx#c@{eYNu(0Wl3IN{jmH>Oz(zsEf(%4O0WD&`b*mIC zrlSiBHKFEdUFk_##jiyAjM?Dht*=ur?a}1>>sMRTTM@~)>lw|Nsi}LCeb*3+FCWG} zArMdFC#dgk{_m3wA9_i81LF1v>KrFXyA`;zj zT_hR=yHaWA$L8SBj6qHj`h~j)Tv5+67?$im7r@)k;`-xkGlzzk>TQvF6WQ9j)$QSLwBSKL#Vh)O6twKsOZ}W0k)Gi1M?J z>hiLJWQywHsi!YM896yhHw_QbjaUS9+EVzyyH}uPgo79k6BJ-yrOC8tWww1YGb1-* z6-A%mGQf3N0Kt2Rws$e5zkB`3)>^y=WF&@D@$kcR-^ZouB8>z{_?_A4S z^^DdHveCTs9}_yKVmi$vf7d9WEGUjjObjh5qO5n4WmfKdW+G#C|Gr`Zm$?9(UW?!V zO8+5Kqmhy_`ucX1n~jlx?@C9J#$r~M;X8mgkB$-zOmgYWi$A>2qbV(Eejbvhb03x&%6`V(%E?^^^pOJ8rGlDo9wU;iKryO;`jRXl^E>JMMM7zN^bt4p}S~db?0yY8)SQt6fTPo%h<2=I;HC! zS&aHCi;5iblq6Rg=EoqILC7H!7FP1OI>u8}nr~#Vv9=~}zH&@KL9>iX(|J9Zx>i%` zfD^b|4Z8SUjjr;8u3VoNm+=5Uz6HHp8KtzNqYK=m^t`;+Y5e9xfFM?VSYDxUsf@QF<0cz4cXg-*A__t%PE(%cc6@yaeG{*~Vj5dBbTFu>p(HYUZ{Ft4Y?szL}Z#i)h zQQE~nBtK)BS~VNbBeJsW6FKw!p;gDi61D%Mf7pwG(>CLJ!i)!P$3W`wa@%L5vhu&* ztH#rzuW&i7!VzXiUAzihn>}PV=;DV=q&t`@UhIm{lvv#a*|~_atEBQJ|UpOuKRSx1KUbVO28}T01+&nVjXOwo+xT~ z9TDy2dFt@Fp_9*1wcCk^_?R{9dGSb1-3$nJ-m(I-{o_Rje`Y4$&FQHyfE;WHMSaTA z5xL{;B`Oos&bz&&=;%Q(D4ME2)oeE8kBP)1>ecu$Hpc zwLFXog(CU)>=oRabvV!v8UQE){8jqqS{aa=7^eVlxmf7e8W5en(P|>x>dm!6v9ON_ zz|_sXnJBvN`Y|tW0u+E?&x2_;t_XUCVSh&IiOjX>VZJ8*X|PUit;BFoA(8L6+n4W%PUB;wO7uI7Dx z-PZ1Z_jet^0JcCfEeA(DAW3H9g@Rk-EQSQqSXh3KO6kzxsoMP;&#o`<0Dmjf74$^p z;+?QS%2&#WP7Q!c_vI?tG-F-MrhwUcy5UU!KWG6mIE<6*d)XS*1W&B9W)CNsk8eQVO_+PPA^P&5@ zu(EG$Q<`le%b{Fyos__FYPZlL9mhuH7b$=2d_~4p&{uAfkUc#}yCtlp;_lL)ZHCR!A3Od)*PV=f1mV=_+ zij2Ljwh{wb4xm3iIzKN!AZObaT7?2XXV{+&Eo`eb+XiTVYFir?xLokAa>O$pi)$Z&;K<n3*V>zHaK9IX_;vv1N}wKD2SH>YAD&r6)gGSjMBd zXagk!d0X2}>^ zCnX`FoL|-G&WDWRvzE~&lQ+!HZVPjk_48wY&F1R}*VBxi!FVA4bcs<_f{!Vd{f6%A zziWGQ>vA8}933gEEkFMq6llG?s;0uGqWx84qi0n>Bk8xWVtCSpaq9gr1{?9RD=M}p zv@2m;>Fr0)t(Z3qDxQhqZL&7@ggD zf=;ChZRy+`jmnd$X|OU_wE71_J*!BJR(F(ID?M7zRx>0mjSCj*i zcQ}klh}WB8TvP%DO!()|%9R$(@&6kL@n2P#$L6j5fZvvx`M~+_!c#YQgOC57QU~O>Rh7OkL zViU!*V1HBBW58uT{&5afCn*q*@79gS{>kCJ{X6WtLJWjDgV8cGM-=B4V}k)p$0Y|7*1p@fabZ+Q!uj?-`2)u4 z(NSj0x%<(WYJd>|@Z}9?0+st{kbLHLX*Cbd*t1ozf(qW65I#7%zqZr~83ML$@`cw2 zXb~`Rv6e>jM2ChTPA`}V_w*z&#zFATJ5+gn!}RKvKU7I&rX#nbqJ~MHf5)7u4hOs2 zA}Oj|(~)yf0}`#uN;l{>a=UW4iKlHNA<2iH>pu5~x)!L5UO+);J`qO$_hYYuyukt_ zz4>|~X#f#0Nk>~d-k?C60QOiS7bkb9E<>kVUK0T92%zyB{rvmlPu_vO9+&}cCBImf zT<$t1=KqZaF9tdscB5WPG=0KwVYn8!rU2ZD2xngQ1#)oMogH-B!C2!K+>1C?3Uz&N zSUHG;xcqma)d2F~KnRHp!C`QFuzMuLhFW(%@1H+^>*M7F#g!|?u*IbCvY51d;{KU1 zqA{1Q=mLKeIqyp6T;oJwh*T7pf|E@t%gMzil%~FS`JkLIoT;*TRQp7%-S0ydK-5^2 z;4MW(_xQ0tpVK3wzUKf4)BRsV4cX|*N~}sVr3O0<5yagD*ha1PkPT#DTLAd|Gd=cZ zPA@j0KZ&i(z@M(#(*5uBPL*Y22ZZ^9zZ%S>YxfA$4GnR%we<$SRky>$Tnw%P3X0P9 z_7Oy*rOa^kp^E&xLuPXrJyO2>=$mWu^yX4Q)f5U%Hgo&kjrVV$i0D+tL-&?jEW!r} z`0d-b?bGLEVH6k1Cp$W+FRMJRoU5#wL&677mCk+C-gMx3T#ZG;;7|s}(Ik9TkMZan zqx$e)TJ2dwKPCjIQ8cZC@!HQ+HZH^1w^`sE=hGQ1`zuTQ736Kvc-F&ym-jN2V;*aNc7zhOY+{+&$%{IX9Fy#nM6Kztdt zMhu~uq>XO+TvKDhtl=00D~r40Wm#LKVTynnjK=Dgzwetx;iEHpO!M2s=e zlwV(m@1J0KHZ`z>`1*3fpEr~figj{w2Z1FUjFhQ!F5moux|o{!0E);kc+cQOi|Bjd z_Domvvzn^xZrYKLNKrEjlMV~!aN5$%Co;W?V}Z)lGWJIy~8B|iiaBZ)r4B<5*s`RBz7d2AN_r&Bx_-D51K^; zICcliqMc{{KK|RsR2R&iy|BTox+aS_>Ir|&F|Ig;$|6u73hbO<%HGU?YqUq@|>C{RK zdZBWZfBu;=<9`>ATtL^}TTTgfyU~tWMui3ojtUh~P0oWIl7CzAIz_`TGlgB-x8 zA3s@%1U25cNAYCrwRJm}aubcR}G`%^zytiN>?G zP1|}ltV)y>3wjTji^>3#0QNN3RvpAt*`gDJ?(0#f1Wh4>H zzd-5ivZ>PMT39)g9-z^|xqErm+oS!ZH*VQ1zLG2zLz{K};B=7BgJJ#LU&qFpr3jm2 zrkr&{b33W8&m-Ta_^X;!;ddMvG$$F(mwScVEq-1d+7n-SRZ{>x?6xe^sE$k{D&=E3 zHM={(Fu60HI}}FkA#G-{j=nYeOFCHNW*8kn!$L0jmMQ18b(FQ$wXEBfD{}`u)~DZ` z@z-~Gp^=dPJSL_pfYP*1EL5}M>(`O3O*(^%ph%qq7^zwAWrGAG{^5%f9(5jgd2{g^ zyMzYP?xYuOdt_HeuRs2F;kDHEz0($6Xkt;fWg0nL{Dq0Yu98*uva*3d{t)RxMYU$= zkVAJjz{Mnt3flMdz-nPR%-oY_9e^fz*vDC24UmO~hAB^`-(Flg$R#Kk1uW6R;`{Ru zNvn%Eno$=7D&4q{B1t$fwpO_yH4ZQKk5frsZpV7&`~CX$#KG>DVLu=TNY4vlnC{q_ z`F%j0&!AVFk;!9vcAkuuSifY21Q;oLIJLBABe&vRbu)1v4< z9g`}*7bDS#HjO%;4!LFX+Uc9Ed~guOJkgK(jV)jA)it^A$;}~C15&=I@JE=N#CRe_ z4PMEjF1If*{ctEmBG^)gM=>GgVd(lF!FNo1^De z{PaxzG6>x|Ix%seJG)|fr#zRo4uYGHk9naZ*K>41k;}1zK7j_5mDK^H-3egx0Q0V{ zlvd`o=Hc4TG&vc`w=tl*pSmzM`N-apOTdW-`wG{eFfQ{@P^3RTxq0IF(<^2<{`6;~ zU!6$`+#vQK2U`o{e_w)`_3G;C%svrW0{{xZEpqi+G9e{BM(7U|-5qn;IOjW9HT~*z z)p(NJgZuY$Hdcm3z{QKRF}e(-Kpt>BkjFyTv!RF}{~(WVTpVq9cwUo=T>B#fJ8KRJ z_sG+BCQ`0`?9N!}FujX~Q{eD8{gW~;M=a%L&>RG8jmu1%oB>b`R$2hII!sI3>)@F& zaqH_VQ_=#|a?6P=vH zv@h$UMfS9`T1opIWOdRsxO;nh>!`RmF>LY_=MN?sr=$v2qhv;Z?|(6ND4$)&vF*31m!!0z|%XI-)n0BF1Z^HVJR2_JzNt{s))WdY!~4)8qsb9Ec5 zn{DXH&fBA_!s*0uPUVqy}&0}RUhU!xGX z(UGx3#xI{zG3hWJV>(Dn1;3a-?;#|l1iI+I^to^CHuY_(m+kM`@E5S~E{ra6;K`~< zc2|slH`QIUs(O5#-~=9Jty@pFcZPsN6X=2AcB5m;7{`2udU#4Q^sUkob$;8Po;>k6<}X zDbB&o{lr*~ z{DXz!f1lguNC~z5=cf?B#^k>NR#kEP9r#AUkJu}c9eE~C@=FoDdM$p5Q8~TUZ;M-&>o{EHT^jF()Uhr zt3~r$8JB>jMnn|q2%T7s|CgC_0JBz#4i3AS#Tat0HPGQ{hq^aYqsH!d$BgMHMmjMk zF)p>HLtnm~nMZxn^m@Uv^PO7S$eB|_u*Df`F!%uHTS|40Zr|c!DMn$px-^={+>ywA zsF7_B+@1*w0pa(x7$bTq24(Ai)Goa)sztZ`#*ZR%RUIw$u)iZ3ia(>|_qrQk4UpT}q0?gsT)YMB#WzeTqR%FlI)Z`MmxOn{{Wq(JO z^Vrg~0@46r|CDZjPi3AleLgg-b?rqru!E0CECIcvSJTqT&)bL;>de{ip&UEr=Skto zV3c9%9aHLV_w9YM2r7)XGJAG{O^ltl8{3sY;rkrKf_2J_?@-b4amMWcrx=Y`X&K7w z>~GJV&y7g4KXX{L+Uve-GL}{DakC>s^4+^>df|5#zU!67$(K}}{zRW2D4PU@gddHn zw5K{$VT~bDG04q#Nw~eL7Yil5_#aw{XX)X?t#IoakjvRa?gsUMdy$ckGYb3wvx20c zGgK-M`T)>};R&nSja9$#c56Y4TG3O^wyX>SDRjzeCVDw{W=sT7NZy&@^U6wRMBR%b z4hes*l%!;fxV!GT(8N=&8eODl$ua+3jM59R$Y)mqKNQ(ScjzG85nvxs+BMdRmM37A z!|e*d(#Tp$j1B@osRcvOxG?wp(tBXObK}YGvkOKl33AlwqDMf0BV%@VQ-Y!S(}GG}o_3LKlDn zAiII%pLm;&cbic_0CV!%E!O`20eLTMav`%0;gF7@$)bkzC3mNQsN@zs7+!F5)-kux z`rXxXhyc@!TNn)1&h{5le!+5I846_i8riPgKd24CMf*FG`Oi(g=%LF;Gk-8y6YQFb zf$e9v_BA#}#U;MI{{77b=8R0TbpdL=xbIniWex!}#v3gBaP}s23t_Ts%GMMhZ1?E2 z%WQLB>G}`lQcArn$%d^>;kl(Pxnl>?vVD9iM{c2E_nhMy!~)omaxn-}p+84W7Fe0+ zi)tKADRx(lOP~N?il!Q!t=yZgz{oGc4Md{!dan0QYipaYjd@Cot2&2B1|EoHg1CzoizP_r9$T*DNU44?_ZT(&1D$CI z(e!o-k0vc{Ufh@HG+qBz?ID_)b?XNzpH#vEYfAh|$_xA?2D_SOZ^&3(+dXHS(< z?*bPG#|zMWu8&<(6TNc^GNfh>o-?JWckb`(bR26cKof}9$!MnE8dCe$Ye;EDE^>wD z(Ymu!U-np7_LjYV-8P5xRebZM(NV*8bNXU&syqu=VL(s)py>czcWC~$mscJNrZ_($ zAQ4HW(fUw{2Cd3^o;1bqoD;84UEQ6sjaK8O_sn8GkmO}4b=P}x?K}%h$ZcnDl27ui zsVzx?yScf;#$;q{-#z^BK@PKR_RF?ZNWy-NP=8C&xZE8EfAc#aPhQYjobFs^g|AOr zucUi;V6r7s=ewF0QAX#Bof_!{QlN9Q(Hp|e&K`vDJ~*>Yb$7AoYlMYj5JUT9!#z?_v8fRU9>VX)S`FPt6FmveK(fdIy&A$SKF@7cI|H|SRwv? zwcC$5ZX8zjWPeM+nA3tb_kDfex=7KG#Id`Ild+5y)>iF{rK+8nT@APj=z|jjI`9%rH$6f3=2AV^P?N<6f#wm76(QoG2W@J zE0lDJ+4K2}Z4whc8f{H0=}be0tJl}cou7mSJ=df>ujI9*c-$(iY74@W+`qSMCkAJ*PZ1eZ=xs%xH zQCO|36T0NFA!%}Jhr0F-EdlC`lpH4w;xAqLuTgete~IIrhpg_~jJ3K>;mDsqU5IyD zd}(atKOJFt{jDNKA4Zt-kL<0S%YtrsB@65B zjSf-f;pQH9-SyRinAjYAdRYK+K%IgZJF6)u9fiDM!}oixe+c|NH#SO=VeHTarD316*q-+ z>uS#jTLJ?HX>@$nfN?*Y4(VjaYZ;^BRDEI$U=%7SH*f+>y?3wjnl|VhB)dO94-XFl z(*!ig8$S#mfY4-a`z`>@2j3`J!)~y;4jn$MrmjABcUZ}KWCX6+8(5z{fG!KVTY zrpu><`HfpS*Vy*`+fqJ)1A*Id^zY#O$dT(`yFmSm)ob8fuseF@OhAIX-NJCl(Hd)x zy_N1fR=@_-S^^r{F9`lYm_W8E8_N4YPWBj5uXqh zr4NwhHu`-1Rz`4oIj24xlzeVu z^Dq7VF_2b2V?R{w+=Drzg9i>AfUq|b7z29wWl#`T_xYTYBXK444IB8~=Z8ba2z*F= z%{fv;t&utkJKc9o@Dll`d08i5AxB+zXlUZJ!!H`F+iMaokwTdvn3m}I&|-$!4Q$s> zUHURA*LZfKG!Vevr5%U0#_-U3FqqgHqM2`YHaTq*NL@ zI&oTD7GJ*_UNLVa)@k28e=uFMp|O!md}AL{0#H~f=nYo5jvo(4-AqL2%0oWwTgy!) zzk`{W_1r;dU;GvTgFoQL4L&RvrEAaii{Q#?&=+J(PfwrYzHAHn?~xhx`irhotF z5baAA;xIR4Y}J0)j_ab(t#cu1X{4A)n?HCl#V2iTH7!j_YH%8<5e0Ra3OGO*UkeDn zut8;?o8m&E!xV@2xVyXO+YRuo z7w6>(2GX2Fj$jKJge$jheT7xT)q>==Z$X>c4{O&OeIHM2y;Xr+Q9|{4M{Da4_EIP=8j5 z5yyd{Ib^LD;cp?!bW~@K4pfke>d$YpJ=diiTsIyc2ULprzLkvymZ3nET^vodLmtM| z&9z}VsP_T- zNepc`Y^;nSjXepVe03~#b?S#$M3S=KnQKb4(a~S=Ao-eVe2(m8Jzsd2>c@Laa;c5k zo%Z(jPw3A+3X$5POVuX*RLko96(i{c@#Mk5K{$-TwY|pKjY&^WZ=x*~wn*e)r5*zS z&F!=fG4j3p_6<#w_PB;;=va)tB;kV+I zU-BVe$gN&yl=J{_Dp6HiyT{JXEUrx=yjCqsC(;R{xitp#?bIJ`{VydbU) zM+!fvtAhj&4cl}m=|~aT+S=l+sn_onVCX11I{I6CyXSP-o`X!EK7W3MkHH?Mbgf~( z(n1fbnA4NHlN~5V{7OqDpr}i-YuDi9WMDyoFnlXL#veHAumwMp9->PvsrAS5C$#z2 z7XJ|X@f?pHU&ja$gYY|e5jtTXxsc&8DMW|x%&dN7udl0PJ9jP^pjdao%x>$B=xd{2 zH!V>}CAo0um+BfTq`^bOXNNnj2FgnR!a?=f=8yV%r6LTfbq~Oj zE9ss9C#M_(J^hJYiSVILD&mJqV`_16@zhL9ON-`t2oh?IjwC@V}=| zYvfPk`CKiarJ_>M(bi6c_i}C*5)2;vy65n4*yt9L55CQzK>kF{RBi5O3W+efY{fGO zU)g{&FJ41j+}No&Ha3>(sifD&N>Bl9X~zOIWtSN8(UL8~9e){Ps;~d*gGs4duKu=l z&xf0u!otFMt+4Bsmda5=Hrx^pzx?rSnY}3^BjY%X*-YJjm@FF_7#JwR&W@*ebEqaz z6L7~(H@BiGOI&VvQq2pt%LJlB6Qc?CpWjyRX4IS z%TX`7GyY|{EUTVRQc@=^d0A>an0XrrzSYI(keXHf=n$zAv`NMv>X7hcy5k0Nh!z&^{~H|Sig4%7*;Eq_ev5H z4-%0&DZkHk7}*TPV|(aa5Z@PR4w;GiEmH#n`g<7}yev{)DnSf_@WXMLsfCAa9BxYu z%Vf>^0dn#^=e4vJl01*Hv%^60C)WD8bLYOjsfgmT3mx4eoI6objOn_WmEXU=KnQrW zpI&ol^P;?bLSmx!RQ(nF%hdvSzm_gJA>I@HU0e+Okp({>Y$KwY7*jYp5cbRV`oK1H zlpsJ9PB>p-xl?Fg3GG zO3kGj>g&1ZPIHUdKk>KtrJ6;py-0sc1hk;v#B2IJJ32kW z{CGATu{%0s;IH9@8Y$M7zUZ(567dgomy?#BSlE6`!5AfNK2*Nl*ue928n#EOn3o0D z>yT>WXH03~|NPO~iA(LKQ*D&Pe0Rf~!9E;gBhwF@jcmGeIj}k&K6+FydAlSS9Dy9+ z@rMsdy0;;&4olPv($YRt51=UUYRU=m1R#*2g2J1d-`{fdZzG;uW0mdy>ylJh4p(T+ z|1bDk3H}JT>(Mvt4I_XGL?e^iZ z;ri4!=cP3@cPlE6A3j6eN7Lgbz&6ksuX^hN zkuGvOit(VjIeJpuKI#jFi~4TV%*@OPzs(Q#Q9{=n{t1@oBJ+a}lU7X#aNWSsVP7FD zCpQnriZ8ZjPn~)L|0XEFzOJs8t*oqs>Vj8JEyJlR1cQR3Q1SixRRun?H3$V@__Ik# z#bOefW>ROisMh`a<__q_ow@#%4pFzcB|$y{!gxHUWS*X$5ZAB9Jh*>Q5K!Vs{<0Mx zNzXNyI?a9V4Me!`h27MP@Nmr3r^B(>4Evs6LJIDxG`#u{Dkg_vMZ%jm*kKvwn-F+< zT@OdLLZ@j4O0G+xn;WX@RyS_^oSamKaX_l+f4k>Bd0~XuJJs(Q_WSoQ;TiQ^HXw8X zZyp@g6|61S(;M>G;J252M+auGe~>D;v$X^+F~$gxBkBAOl{~%VFUrmIO6rLCH5x?rgpI~5+lbsDW3=_DxJ0c}1 za+)?A%IDF|_=)9w!^*0)+p2)D0Zz514{#;UEO zv%0a+OfPK9lxN+EaaEohkVxU__4+EHJOFIkt4h1_m`^f;EQ}!n-OlC4pf)&4h^nd_GyP zG7|7k2_xWw>9oE1LBqdW#*NFw$-TEZWaZwC{`oO8JG;WVzU*C(N_@0p zO{fxE$1K!h#P0k)1bg$1v09y0+@93S#X|6UdEtC~=4($+B&;4_bhy-NGc&*8;NSp! zY8Ruh?bT|3ifi-}dy?L~`2=HIdPxtLq>}B&(o9GB)46Lg%uYt+y)h>r@nZ~!g2Bhx z<0d8p+UX|B1S0f+S8?#mPIl}L550!izbH>IY9^gjHjFPGw{O0@JRI9 zn`${Z)y{diyf3Lb^iO2e%%oICLN|Xf&bV}XA>F8e4-3Q`5-2qcS4i7&9zLe5t($De z0BJ3&^FNbtK#VuM-JMx>Lb9U|H9N2PG+Hj$r-Op7p8#SVKF_p=-g zyo+tAdLgv}-+8?!S`w}wI&+RH(qd>oDP6qW*CR(Br__m0m3GdMJ90hFzHp^tbjz5w zb5}-Q%$SMwOkSUdXUF?HciXq~v$r?K_9trYyWYga?nI^OSi+*0Y};uOAUj2ZI^#g+ zTQcQ|BYb@CT6(OeL+Uuv_BB5n6?9)ZbgSEel#Q+Bm55_@mwlwRnVHDe`hcU$@(;6b zontpR;)`b8R3N1nBO6f?6*Dq4{WR01c z8qa-9NDIo4>{ixox!IwwUI7;)J|`v?$n2X^GrTITYBr%w8!Z}kFFJaUx%|yLNl9Vw z%-|huy8GbSvv*zgDF=oZqx}8-4T{&`8D3%QjFLs({<=fzFgIn>_XU}#J<=K*pM{@mq-z-@LzQdIpH~bOI;gC8^bPq@3 zQ6V831YI9l_WOZ>f%WSI7u!^=lya4x3||~b$;ab-Mhe7*a#IV z87*I1kEOY}dC>ZWiRmv3*HCL_fB5ha&uJ!*!S<>vps`0g1Y*!WU52|JN+DD zB(7iq>{x=KfrXej7lZBJ-(@c291nwup!b z-P!9;<|EgCI1lJVb-v4Q79#pNIJhG~mKgP%va&L~`Vj8hc*L@@2v1uEPn(5>g@_0) zU2q8+h9C4t*9C%9(k>Vv9j79NA$OW$-46itgJ{${ zyRcA&Uu4@$jH@Ms7vWS-9+}S(=-(=hc+M^@eMV3w)LO4z(OtcE4UDF7ZvH*@V9jlg zp$7B}AHl2&xBdZSx+M#m$ENqB7SxU@Yib@2=QY590#RSFGdWUH8Flri4yEJYlZO$Z zVE=gvUUP##f8O)=-#aqj(=T=RwY;RH@mTsW_zL%lRJ5W?!U64$Y1RXGXr$1?_sn8Qp=ylu0Sy2Ge= zeQ@Th>+2uKN8U&DFgluP#G%lbkB)(XbZ%}A5!|PspdkB33p)pV9v^V2NTTyF z9MOHeonV+{NdqO&P--C5cpH;6NpIQw6&6_uUV4pr;x|xUs zZO1)=!>5HY zf}K5{^KV#BkiMwHuf3>th~f8{n4G+mNJUi@8wX>#1j|o2U5#YgVtd2F`w0Ah>?hhz z06)J{`EVc6o7N?wE9U0$8z%B&E#L3g!$;1_XO8(FF^>j^5x_e2BjyZ+OX=t!j<=Z5~ z)aX#jMs697z#uK`OI5g{;oBfXLZ7*ZVI&0N-{D!slFb>bIQg>lawU~^J zdkOVRcb_SxvznWl4p>d2H!~PvgQ{+KgvukBrEz<|eEvNCpBurleScFQ7Gz()e$}p5 zwW)eBMn?36QTQN?K5JkPdK$i?9}5fPK763U$>3+qClA-9()E-{aTuw|C@SuopPvuy zg%7BXwG5OidRUp%-Wd&SvAj??w%AXbCdJP$&m`r=41*tYc~>*YU{dVb#o;pcI?i04 zO>=c^QveSJqggy-TEsD>qa7H^5_@mZ*=hU2f%QRz7KD>x~ie!0q@FM|WE%_>#L zOp)^ilvWe!SHr$GHlFs{aQPZ7LaC^zc>Ltai+An_h)YOdPJPEujltUHW^$komDsJP z-Is1%b5FZv`jYQ*5yZ~ROjti+2_Q9l1X1K8!osx3LJ0=EaMf!8TSN4vR6YS^5^>y( zlyzloGV9sv*9UNB5`F3`bOc1M5O((2n(LZ}i2V>rIKOEy%5>z}7x-Q#Kw_BGmw0q^ zbar<36B0uB0^jo^XEn#JCY&>`H{0&A7#JB@pssP*-dwg{{&N|(&kXL3?LFBA1-0)k z7b8&I!_I}!1J{8+S)AgmkxgAW`Rd0>a4RoQ9p_KX)qJ$QynV^+^OK6-eckF)=h{BE zk6~G{NVr{rtu7pQ2OYBt^IZGhJ$pt01UUqS^sTP!xDFeaAi{dGv(nKQ_1+T4Lr?p` zo)52HxW$tF`Sa)0>C+XJzGMUwE))qTItiF(Q?$rV?2B_EB0APuVbj*{?~H2#x+OuC zyy(Vl3|c!72s3MILTJD-Vvfp#5C8xszyOf?cTXM<_Ot!UtQqXu(xdOU^?n~~z*=oV ztp8YCoPY`w{kxqoGk%k`{X0As5rJUN2Jq)mSQxdrg~e%)mD^!!X_Mll80WONKb?`8 z3AA#DlvKG@ulHiR9$_b-_D1v#El3yoAY~;fCs#x#`hm-9Yt=a?q2%eOPshbw)O`># zrzO;ey(oVhriq_wYm;>(BZd<~Bz?leX>_wpPC8MwbR(zu@|*+ijMQR}j~_d{59*rG zHUGigYj;rGv?ssTTLCX9u#D3(~*3{?eCFNn(@d(FmN2@0|Jh^U73j0l_ctquV04qa; zINkdU1Kwj!B=Ncr#>fO|Jv~pB%*nBCKv4RvD&ujdXt&g~=N1d2TCYUgcU`~EToWuq z^0Ovu0Dg+qKD)?fo5W_$tErJwa;kg+9?o!rnSz2MPY??%z8p5u0nGRP6>ff|GxC_N zP&>}c`yehZxXWG}XIKzq!Ah3<_vR!V62x?;C`MCC&1;V!yA+JmEvUrBH3*o?^6&Mz z_dS`iCOG~~q4E8ha;aT*c3gKRm!5aoBauWZd5k99-#_IGJ^grPOUq#{wf;k5kL#DF z11~x)dGZ>sJnGW;_vd*3`8k7<)lq9gnp}64G$)}=kxvg&_Lt0uWaVE)IUg1~h-;_N z2&}0*oTs#FSCWEqF~qd)M4z+YSyA!Qeq-fsjs=CrNx2}m1NhgE4jeL5$M1@|%#xlt zGe5Vr&XkEGN>)}oYV1-!Gcd1ck(3}xk|ScpBsDcU$4{h6D+WwKn2m~BCoVgil<;>a z!{SPecV9fPlLfMx@)s&t8^cA;oXPE8i+}65x#mf9K7>UM8P6dR)rBueq#_~=-Y?xm zny##D5q)lMPjqxfWZujg4hBrHkWzA<`&3`AKXopVI47(2+O;!8_f$CF#7iF}N=ef^ zEP4T??mTz4bwa)7AbTRS5=;pn9_Z0dH7u0`MXLi21Ab|wu5Pbx@Qz!$oBvVLrbuSL^ zMCARx-#R-hKiV&GZ@QBZMMi4=p0GN4{Dx$p60W9=^9ICTXifc@eSY7Ra4#cfW#u}? z@dNBu$zyqaHb=sg-lV4Ph)_8wA#oC^hu6X`j=aGk^B`=dXR)RvzC$evA{P#YCXCkC zr#%gKqJ<{hr+gdB+bg%l9UNHRSa%*g>F`TcIVq|AAeY+K{dy&Ox!|dzPSI8*7cl9r zcH1Gh`fG#?lIfHFadCXmSJ57G!zJGNbL-*GJv31CFQI=<*i8X{i2YpD1Fzk>b&u8S zRbZyk=9}c@jTU8xLLv)`of$^XR8@Z7z7W9SqT$;wtDqp@;7ArJBABO(7rWIvy60r3 zlXqj%JTE?p?~q2$c(at9S#wMv?u_kdV&=e8wygX**Kkb21Y39Jf|B!=aNq15avuUZ zJZZi6TU#icVVUGZy!=@tR3cBp?T_MF*SXrmd8Dqc7je8Fk(J#Dke}%)AIN_#Iz9}T z@M#0}NBg6D#+o<=r@D_BmqkB%OiItoD_YUsF1Okq_u$=)^$RBlzP#|h^7#q#-KH6i zX9{Q|-g&~h?RJ(!ixt0DQEN$NZoU=p?y{Iav;57kuMQvz?sS@Z#o&(H@moKko_m{|*YE6xQPrRZa?#6Xr7#q9LOx zVbi@z00>U!WXonYH%2XI-_ST>ZhnS{h*9{G@5`4KuY0L!^?oi7oV8!Nbr|07(jFc( zu!4*;l{$M)#Gs1#>*?Mm}lQd3>gRWUJsuEg=}`}fKuNFm!&%4X*sfVq{1 zk^8+mHRvuYpDe?thbGK$meCE%pN+z%l&<82yDkeU%DhXYzV}{>HJdF?RQW$K4o0ti z;)k4x2?gI}rJ6!VMeJviU!yb#dSp=cgQH}Njbna3Q{gvV$P*3+33tTf$+TxZKTJft zHRf$nTfRMAGo-oGb8B@67E^G7ycCrfDLeZXF!0{l$*e$;K?lYc*nxWvR%1AU!N6eI z%)0l0iAgZ7Ib*J`zknb8VW|t;VU=B7L{ggqtk~`B(hj)G@iY&7Ijnxz{@}jxK?K?o zGniG7Pl#xWR+Kd}qgPSc|8wfr0X;p&Cv+{v7aRA;sLnuDq}F|AGo@rP>9W{~lG4|w zY@;P;`1{EsRD$nLmYhZk^6W*vWckLtSU*~>`}U>BB`0%Og+mGS;O^aqD|5B3@uP1> zHDDu{AfE-xmEB{_TvgT8hgevg2>C&&yL0N@UKHG2Jzl{v62(9LSV!MzaY_1y;^y{< zBL-W||CRmuk}oMPH+N0;r;OjyLqbNNks5H)kjnqT9&bPCxKBJ;bc27#)#9?Ud@Cy* zG7J~Vh>6(;M@IbH(@WoE@!Q@{6fE>y2X3=X92ZA+%H=kBi-UNK!p2xEEe0@@TO8EC zYaS=5u1<1xSYL{c4Z+3jg?&uw z+l-9Er%%(@uSUExZGI%no+?D~@%?-1?QiNb930dx!$Em<^=|h(*J(c0)D-p1SNUZP zy-<_JE%H6U`1Z=TBXf_BWdjUv|tmOFQPs#g(64szyIO6>M{#KMD8GF4vnyxvl~Cg@Q?FGa{D!b&eaF~q zXD2N5D`QRF@qfMN%wa$zH2mql?`^02!yG#W%W$v-vzEh0g$}44(axPVE-qaa&332O zmISHASO`aD5r%_OPK%33eP3Pp;xhY&1c#)>w>K>H6sn`6ud9O#0e7CZ~`|#0c0AzGj)M12Inq6e} zFX*4BP4+}WN+HOMH4<6*!uRd>egs@`C@@6kaiEjVPs*9 zytXyz&ql(M2#ZwEG*0eD$$btgDx#l524LRYU;F8P$6dSgCtF{OkyEgEQD3;A0Xco0 z{)y4y;U_OmN2_}XQN8gVl)~R~zBn-pHiQ}p3p}vXxLxxCKKUJ(+=V-mlc0H&f@H`2 z`x;;)KgiB@p&#%RJ^+#swU}<8jh~4Ts)}3HMYpYWA=Pe0}l|1Y2Z{ME2 zQHw3-BF6Oa=y6)XrxC8?H~`=?8ik>_lO^kaZr`|(vh_DLAMOgu=h9;|?d$hi zzq_(>uIg(>!oSzxk0%g5_GLAqDMl4aD@mt>gzg0f=FR7eY+YzygQ9u4PF03`Y%(SzuK!>Oxe)kmd;VpFwD05G@`eh6Xk5Isu8kM;CK>7I#~(9? zX{+mS;Dd5y+Yj&iSk&_~%8qk5Os{9@*q`;Knx9qV%j|-8PYMV|Z3$J-pLP1#^jexp zB=^;>$26QL#)YJ1EDkYw>|36B`KcmKjPTZI`yw?pnQ|elJMFW$@rEzv=eZG#c*ZP? zyd(%+fUMFbT+5|Px*!%&iE+2H3kgwfZQX|+$!7$+pCcp3osP8_mqzY#UbeeESm~f| z$RK>vRM_?xg4`m!K?>k4kEjyi?;UTi9CjT2I8?eUCt$!D5Ku7pnbCS~V7uw_?-rXG zx&o3DCtO!n$9TGmm(L)l{nU}qi1#KWIx?oF%Ktuwwo`<2|2-EMv6SPe8Wl}=f}^Dj zAronD-)&dY!g#sp&LOeuQF`#i)k*gvtf!I^rX06Cy{I*rUZiu zy&3;4u-KJF_*6V__h(Ku$k5MW?aZtXL`IN_sURS=&?$5z_*3Tt>+aYg3 zx%$wz2F5S?bt9x0Iif`#L3cV{SU|wVnvZaxGY}5+Om3cZSrwH>I9!o6vxVu#?(KsD z;B>De`|N0Ftm%^^WtrPkU3XQYMt%6pJs3qrCpKj>E*CeM{U}NRb;}#?KU2DV6zmxq zxXY8Kh9-nXD&g2*5_j1Jav7`}XDV>Jaj#C>$IC=TOFcnoO9{GS7U0iP=$u7I%l~%c zZm%(WZtfo$`D6(u=3;DtiO%LH1r&lWP%`pfW+0`c+!yUnJ0V{+gfmXcerPu`1^X?JGlb-4&@3cX>vaokTXKd8 z>s{l!1>WCk>DPt|vKE-l9lkS>7;@o(+i`h;Is2cgJX~WtX!s9G!*FG^nKd{``A5sU z*N?h#7%tn|?qFgntFCxJ205Vi6dQizD(QOf4^hnRljjkPM@%CjksbPUpC<)S$?tD5 zgcH8F_++fKB6fOPJ`Nh$yIRLdPzYauy9y!gm6aua9LST_*er0hF1_SO(mvoEz^PEu zUC`Grc`{QL^+?jQ&H9-Ck-gbD29F32K`XgPz_1v3!)?cP;j&F9262gXVZ&mZ_UT@7 z*y-&j-kE?F898H=-l?0 z_pNUzd`oUdpeg>SpFUz^+^EQ@bp?ITjLYsMPEMm;A8w}gi067XMZdl=U_xn>zapsQ z-rY@p3V<187bT$tcRt}mcX)NJC7ZzC7OfwoWDTcosFSa(9jrF8TO4*p|5a92%^VM& zVE`Qp7|d-><`+smLmuJgW(Y+lAIkf}KCr4@S>MAhxX1^=v_KI@W24QSjasRt;k893 zCh?Ei8a+n2#|W$T_6JRgzCta3tWlC(m!+jEPnN7%S-QBB!zqmtHAr|mOB+v^|6uTck>Q~`dsq$O)NxdnbW0B9TqvHTsA!0`1n0x8z2g+8jpD}T* zQJB&{kng%+*Y$pko$vD6ly7hS7uS0i9&Gt$l|@2P>op_W>$S9u(7~?}ve@fC>z=s) z7%$^d+#dcsuyFSBKV_@|@|qugx8R+}(+^|}QEn;_&eKo~Ksux~fH7d4?ynazF> ze98Skn{2Y8@-Rg}`oGob|IVZin3&LX>xYX{!s+I{C+|Xsev>NkDy_5o#W$eHhMyJEGo)8H)rsz!`2VUWZ1&l z#cAuM$^^rSI>xaWG;M8(eSJZPRxDs#A83hUw$T$dA6ykBEgTZsd<)$ zyK=1kpKR=r=NW9-TMjn*A|_0g1JQ51QukEPXtU3laQ}~qVx6a4D|Spi zg!e~Xb}U+ab&u_Ump=mM&);3lmoA0FH|u_;O%)l%#M|s_rgYs+bVC*J49yp<_4f6pZ=^1HW*l{sJX_0_K5c>FiYevbrk{hk-KqYzqB;pFaXqZ z=kC-dD(*aG=Ckw8UDtF1+(9A8K)9B>t`6+8XDzo-8j6TI3q8c6090_w;cBd|M8I7O z5swva$xVU%qN39vR%-8O>64jKxSN}|xu4bJ6e)VALO0gEw-$~-S=L!rZfj>x&oqO` z|8Jug}fAhBU;@4*h8gV`E*j z)%l!PXKOR}wdScH-jUHhr(j?RLM|Amew=`yW8?qIv?V-(HYRKV_C*atLooFAkI4S) ze0NQTJ5!S4V_@Ljs3>=?|53QO$B8_NZ2cOs?ORqxQ?}h-(BJ#cc$Ew&%?0f?OB?eK znpRdU7|-?j`Lm&}$&1LS*Y=;vW#G>Mx2-23m1oZ*to+n0Ov)16)BY>G=@m#YF%|J} z5zllsXQ)1zsKaKi34Cw}g~sZFpT)T5GL7C9qapzkdiv!FSS2Oz%(}PSKVP5^&DcPSD6*~ayAq?%`xm&*yQ4d$H8@OtXRm#SD zYe&9K;HREEd89lCkaAG}C@$xny-40xn&` zg#C|a0V+HZIk~$^#86+nTsUF7QAh+FMNh&?T~qTukKUPdRg!mcY!_lBCj=>0V!cQI zDQ4dG|EHKqzu|ZZq#(#`Zqi0Xn5N$`CL?PY{PovcKl=&^d>Fg;?~9THMn*_$W`9y^ zYuBB+rO%H;VkomEZduf1^-B_f& zucz}R=jQi)xB6U&5%E_>qrSL|P$yh(wjb9-B2g}5+_znUL5-%x&Mc|N)4k0@^CQhL zzWT9$A7k_XGr{oih@P8oSTnCZN?7}v)C4Bdfw^C@KP{V%#b;;l|NMD31R5V9uE8`o z=pQKby@|QS*})lBcp93+>v#uZM`Mq-`H;P33x@JkLs2FN5B*P zzhh3Lkii`wdsEX=wfA?DL1s~BvWQWL39gtF-a)#pH^V&+P_xGRe)}e`c9#bg6~KC! zs68zxBHZ?8qJ(@lB_}Lgcc?WuK*@6$s6rIJ=HDCYf?gc zCW2|Q!xf$gWvcy_z@%tsl(VfnnVzt0Zfv2D`Z-l{7|gs1dDhbQUxf_p{8@X=%v$yy zEPL|nm)P&_1!`2y7DKXo=omXaqgV-7pus~pax^ZR-044-s=a5rH|m0N0~7v`K9u$} zmbFb`JTh1|ewR!Y8&RUm%B<}Bzc+83qXJ_kC9U55k7#5h^OYOth6nt=Pj#Xfp@3nz$A+_4H(p z(Ht){zV}FOGAh(q1;G9VA^}08KlXu7o&c(5G{7m0VvjaQSBpTW%dGfxe5fX9D0tz!uRDaA&Ra9g#*d6`)bxm;Vu{O_b!aw>)62h5m(A2om;MDZ= zT(@Pc8Ia{u0s^vVe4|HbKQdogDZR43Ue(%)2Cq{!hM=HgqiNB5{rYvZ9uw!srlxKw z9D|G!6%mnxqa&f2Eh8fXiq#%)1k&?8(c|9O+%z*YyMK^b^ix&U&WMPJ_Ktnvf52jq zElg>0Dl31fYGyTMVh>MJiP5r=CXH76(MZ%}cse|>d-eR(Fm zq_4l91ted;^mLy62M)B9dwUy$BT%?raPvDS*dNkp;DXQe(P4y?2=4KjzdN%`^QJLN z1*|l+uYAl#%ys^1_243{hd^xdi-@3y zrQ0dHe(~c}j~PM;9bt-RbpJep-R?_M73dQa2CPs0g3v8~`B(lVgwm{3!11iopO7i=>DD$B*Z#tE(YdL-svcP0v+i zHs$ySn6h29v?L5DS%6dls!MEld1B%*UV~hc9XobF(18U5zJ71s93i@w1q8ak#31u{ zo=vY1`pKBk&Q7`8i%A)X_U^#k6UbZsj~{EUcCntjjlPF%HO2x4v0#M;+Qg-Tie!$8B-&|Z-DiHQb5p{XCipc56*Ugw#9op;dlOEBhp*{}%FpOIJ@uowARB^?mP`C6PpYCbqjlZ02W$WmQ&Up{t+=Gb_;*|Ci)_0A zNleFx7To=p;I{bHK7Crh8~nEckA)xyS6SJI=zTsM8ZsZ5!DHj}SQ}3kTrw~PUzk{G zH{n=lAzOP)h^CSEap&gUF~C4{9s@T2hmb}42R=}YZfG zNTZux_jb9n zi@#fB3Nzk~gn$;LW8GO_Pl}6fo`QZHhmViXEQZZ7K}dmVhtHTS4C^gj?swlyMplJ2 za0m=QOjHplR74Yf`E0eML{EZ(!Un9Zt!4D|XbBhUrKhXA)aUi@X%h9eYX@2*xmckx zd@sSR(=j-f8WbFSDX$XV2Ql;RXV0DmKjR2LznX!ulCrWEUqN>EJ#B7isk2~^Lfc{; z=STgJ;^ocM*8UWY1j2R!b$bwpEQ~jEbF-H|U_|2rI8&pIQKy83_Yfr}CLVto78cfC zw2@PLF}k+3we=L{xfqu1`aaqNL1v;N-Q~454qw4SHV~sQ1@;?FaGZjKVOb_D>9dwi zvRLNYJ-XbPTiZfuOgw}$Hon83@StR`+S+17ll*Ip1l-8?A?mPUcr+N7)c&yy#AnbP zeZd;Odi^?DCz2X`@ALCNV}1nmi5d7X6e}nzS3&wFZBg+5kJtqU8@NHbQKqT+TN75~ zL>RK&*w{eNfpco0oE4A6>rYO0ZmthTs4y{dudmM-{6Djn_=~rlo#jFQ!Yb~cgs&wkTIWFYL%c9D?0F)jCk^`!t9W``IV0|%@8IzRr=GxhY{*zf>D z3Oj!|qPHHqUBlRTKNbck&!3u`vwG$w+?NQ`9=KA!fPj58e8&C}XDy|bmC44MV{xh) zlFc&qSE3xii&8!65lUhC#Qt83 zdV70~GCvdid7Cu0KKJ;V$hRQmp_WWcTVue21O~Z$d7}45;`Qw8XpD<^o$ULN$lILy z#ekR?#RYnkt}Ipr0Jp=#FPqRi1CKD59>CWk%2y?-5P2V=wFcH8CaRn!6^ZP4KxJIx)!`pPUUC^3&I+QELngVs(DCZ#g|36dX*Lve%uZ#T_@h z$eZj&tS*q`LkK*1tnv5>6B83C=bxC#^mR#nF-;**w2o>j+KZK=TIO(6W~c} zOtqMgroly1s8ALn;{eivk3QUz_e0Cduck+Cv4t`fU@s2XbOUdWM9AtoN!|fz*NIKk#k`y!b;c`N|Gy zpS(ya%iSOzzA*h*T3P4wemib}jIB(saus)2HRIe}Ig%d2)~{fk(}E8i7__yWohnr& z7B648iecyBu>wRsHmZ&W7Vhffg9HnE0I2(QSEvJMhc8VhQuiRRG5lW@dKGL_Sy@>W zg@scf!N3Lx`8kLb1y=f;*0SdQITRuVXy^p!KGqjZ>ut%`#K6bQL6Uf&vvdhqUnUYh z;s-ErOwomv88l!uu-S~h>3Ycxhi9`w?Rj{pDlBIRkA^%O?hY`W3 zMkHES;w9uJ2lCkL)awF)z{68K$TBEOPf!01Mmui*2C z0_j9h5cYs84gmA7otT)%yH!w-F+N@&{5N}QJ6a*{r~JLn<+ZW{pLVr6L|jw9&droH z+EedJ!^PCpiN>>CzXwM-8CEx?StVCG+S{{CoTK-%fI8D~-n>f!quY59`rwg+-!CI<+|VX2&VGA*Y6enxJJ$gHatUvf4iRyPVXq zfQbIvnDV@O?OJZxdmc9=bbtNm$RMA6q^y?22fGblD$0pHGf;CBpk^p~1k9OO@J9v1 zpax)S02bGA`;qW5>R8yo8nNpRq#gDGLeRoyZ!BxecGM&d9w2x)+cMZPn_ zg@?yVJ`%<#HEjNk{gV2zp&XE4W0ULyx9>KKi_bepR3FWj}QZBsi!n87?|m&}vG OVZZBJyF%N8k^cbPe`GfR diff --git a/docs/html/closure_8h_source.html b/docs/html/closure_8h_source.html deleted file mode 100644 index 409e8ea..0000000 --- a/docs/html/closure_8h_source.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/closure.h Source File - - - - - - - - - - -
-
-
closure.h
-
-
-Go to the documentation of this file.
1 
-
7 #ifndef UEL_CLOSURE_H
-
8 #define UEL_CLOSURE_H
-
9 
-
15 typedef void * (* uel_closure_function_t)(void *context, void *params);
-
16 
-
27 typedef struct uel_closure uel_closure_t;
-
28 struct uel_closure{
- -
35  void *context;
-
36 };
-
37 
-
46 uel_closure_t uel_closure_create(uel_closure_function_t function,void *context);
-
47 
-
54 void *uel_closure_invoke(uel_closure_t *closure, void *params);
-
55 
-
61 uel_closure_t uel_nop();
-
62 
-
63 #endif /* UEL_CLOSURE_H */
-
-
Defines a closure, a tuple <function, context, destructor>
Definition: closure.h:28
-
uel_closure_t uel_nop()
Returns a closure that does nothing.
-
uel_closure_t uel_closure_create(uel_closure_function_t function, void *context)
Creates a new closure.
-
void * uel_closure_invoke(uel_closure_t *closure, void *params)
Invokes a closure and returns whatever value it returned.
-
void * context
The context supplied to the closure durint creation. This context will be available during the functi...
Definition: closure.h:35
-
void *(* uel_closure_function_t)(void *context, void *params)
Defines a closure function, suitable for being bound at a closure.
Definition: closure.h:15
- - - - diff --git a/docs/html/conditional_8h.html b/docs/html/conditional_8h.html deleted file mode 100644 index d89ee25..0000000 --- a/docs/html/conditional_8h.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/conditional.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
conditional.h File Reference
-
-
- -

Contains definitions of functional conditionals, structures that act as if-else constructs. -More...

-
-Include dependency graph for conditional.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_conditional_t
 Conditionals are constructs that provide functional flow control. More...
 
- - - - - - - -

-Functions

void uel_conditional_init (uel_conditional_t *conditional, uel_closure_t test, uel_closure_t if_true, uel_closure_t if_false)
 Initialises a conditional structure. More...
 
void * uel_conditional_apply (uel_conditional_t *conditional, void *params)
 Applies a conditional do some input. More...
 
-

Detailed Description

-

Contains definitions of functional conditionals, structures that act as if-else constructs.

-

Function Documentation

- -

◆ uel_conditional_apply()

- -
-
- - - - - - - - - - - - - - - - - - -
void* uel_conditional_apply (uel_conditional_t * conditional,
void * params 
)
-
- -

Applies a conditional do some input.

-

This function takes some input and submits it to the test closure, whose output will be cast to a boolean value. According to this value, either if_true or if_false closures will be called with the same value as parameters.

-
Parameters
- - - -
conditionalThe conditional to be applied
paramsThe parameter that will be tested and provided to the chosen closure
-
-
-
Returns
Whatever the invoked closure returned
- -
-
- -

◆ uel_conditional_init()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_conditional_init (uel_conditional_t * conditional,
uel_closure_t test,
uel_closure_t if_true,
uel_closure_t if_false 
)
-
- -

Initialises a conditional structure.

-
Parameters
- - - - - -
conditionalThe conditional object to be initialised
testThe closure to test the input in order to decide what to do next
if_trueThe closure to be invoked when the test closure returns true
if_falseThe closure to be invoked when the test closure returns false
-
-
- -
-
-
- - - - diff --git a/docs/html/conditional_8h__dep__incl.map b/docs/html/conditional_8h__dep__incl.map deleted file mode 100644 index 0060105..0000000 --- a/docs/html/conditional_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/conditional_8h__dep__incl.md5 b/docs/html/conditional_8h__dep__incl.md5 deleted file mode 100644 index 7dd41b8..0000000 --- a/docs/html/conditional_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -39c6bc037b27d37e18ba54b14b839779 \ No newline at end of file diff --git a/docs/html/conditional_8h__dep__incl.png b/docs/html/conditional_8h__dep__incl.png deleted file mode 100644 index 5f0cac3ac3c9b128127dd2016bfbba5351f91fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4879 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 diff --git a/docs/html/conditional_8h__incl.map b/docs/html/conditional_8h__incl.map deleted file mode 100644 index 2860df9..0000000 --- a/docs/html/conditional_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/conditional_8h__incl.md5 b/docs/html/conditional_8h__incl.md5 deleted file mode 100644 index aa8a8ef..0000000 --- a/docs/html/conditional_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -ecf3129280a21e3923f9404b96b9d5e5 \ No newline at end of file diff --git a/docs/html/conditional_8h__incl.png b/docs/html/conditional_8h__incl.png deleted file mode 100644 index 99a6c3ebb119bb936d28e273e0c6ff32f36a1dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4802 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 gqJtC%jLsCwsU|m<(Gl~1Ft`0`2YX_ diff --git a/docs/html/conditional_8h_source.html b/docs/html/conditional_8h_source.html deleted file mode 100644 index 6ac6609..0000000 --- a/docs/html/conditional_8h_source.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/conditional.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
conditional.h
-
-
-Go to the documentation of this file.
1 
-
7 #ifndef UEL_CONDITIONAL_H
-
8 #define UEL_CONDITIONAL_H
-
9 
-
10 #include "uevloop/utils/closure.h"
-
11 
-
18 typedef struct uel_conditional uel_conditional_t;
- -
21  uel_closure_t test;
-
23  uel_closure_t if_true;
-
25  uel_closure_t if_false;
-
26 };
-
27 
-
35 void uel_conditional_init(uel_conditional_t *conditional, uel_closure_t test,
-
36  uel_closure_t if_true, uel_closure_t if_false);
-
37 
-
50 void *uel_conditional_apply(uel_conditional_t *conditional, void *params);
-
51 
-
52 #endif /* end of include guard: UEL_CONDITIONAL_H */
-
-
Conditionals are constructs that provide functional flow control.
Definition: conditional.h:19
-
uel_closure_t if_true
The closure that will be invoked if the test closure returns true
Definition: conditional.h:23
-
uel_closure_t if_false
The closure that will be invoked if the test closure returns false
Definition: conditional.h:25
-
Defines closures, objects that bind functions to creating and calling contexts.
-
uel_closure_t test
A closure that, based on its input, should return true or false.
Definition: conditional.h:21
-
void * uel_conditional_apply(uel_conditional_t *conditional, void *params)
Applies a conditional do some input.
-
void uel_conditional_init(uel_conditional_t *conditional, uel_closure_t test, uel_closure_t if_true, uel_closure_t if_false)
Initialises a conditional structure.
- - - - diff --git a/docs/html/config_8h.html b/docs/html/config_8h.html deleted file mode 100644 index 9dddb8b..0000000 --- a/docs/html/config_8h.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/config.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
config.h File Reference
-
-
- -

Central repository of system configuration. This is meant to be edited by the programmer as needed. -More...

-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - -

-Macros

-#define UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N   (7)
 Defines the size of the event pool size in log2 form. Defaults to 128 events.
 
-#define UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N   (7)
 Defines the size of the linked list node pool size in log2 form. Defaults to 128 nodes.
 
-#define UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N   (5)
 The size of the event queue in log2 form. Defaults to 32 events.
 
-#define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N   (4)
 The size of the schedule queue in log2 form. Defaults to 32 events.
 
-#define UEL_SIGNAL_MAX_LISTENERS   (5)
 Defines the max number of listeners to be attached to an speciffic signal in a single relay.
 
-#define UEL_PROMISE_SHORTCUTS
 Enable promise chain functions aliases: THEN, CATCH, AFTER, ALWAYS.
 
-

Detailed Description

-

Central repository of system configuration. This is meant to be edited by the programmer as needed.

-
- - - - diff --git a/docs/html/config_8h__dep__incl.map b/docs/html/config_8h__dep__incl.map deleted file mode 100644 index 265063e..0000000 --- a/docs/html/config_8h__dep__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docs/html/config_8h__dep__incl.md5 b/docs/html/config_8h__dep__incl.md5 deleted file mode 100644 index 7e4ebcd..0000000 --- a/docs/html/config_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -71475bea109d5215ef9ed22c68c1fa05 \ No newline at end of file diff --git a/docs/html/config_8h__dep__incl.png b/docs/html/config_8h__dep__incl.png deleted file mode 100644 index a4f48071135fba3b33a68f64bc485347292523b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30260 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 diff --git a/docs/html/config_8h_source.html b/docs/html/config_8h_source.html deleted file mode 100644 index be0e0f2..0000000 --- a/docs/html/config_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/config.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
config.h
-
-
-Go to the documentation of this file.
1 
-
7 #ifndef UEL_CONFIG_H
-
8 #define UEL_CONFIG_H
-
9 
-
10 /* UEL_SYSPOOLS MODULE CONFIGURATION */
-
11 
-
12 #ifndef UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N
-
13 #define UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N (7)
-
15 #endif /* UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N */
-
16 
-
17 #ifndef UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N
-
18 #define UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N (7)
-
20 #endif /* UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N */
-
21 
-
22 
-
23 /* UEL_SYSQUEUES MODULE CONFIGURATION */
-
24 
-
25 #ifndef UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N
-
26 #define UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N (5)
-
28 #endif /* UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N */
-
29 
-
30 #ifndef UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N
-
31 #define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N (4)
-
33 #endif /* UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N */
-
34 
-
35 
-
36 /* SIGNAL MODULE CONFIGURATION */
-
37 
-
38 #ifndef UEL_SIGNAL_MAX_LISTENERS
-
39 #define UEL_SIGNAL_MAX_LISTENERS (5)
-
42 #endif /* UEL_SIGNAL_MAX_LISTENERS */
-
43 
-
44 /* PROMISE MODULE CONFIGURATION */
-
45 
-
47 #define UEL_PROMISE_SHORTCUTS
-
48 
-
49 #endif /* end of include guard: UEL_CONFIG_H */
-
- - - - diff --git a/docs/html/critical-section_8h.html b/docs/html/critical-section_8h.html deleted file mode 100644 index badcf80..0000000 --- a/docs/html/critical-section_8h.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/portability/critical-section.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
critical-section.h File Reference
-
-
- -

Contains macros for delimitating critical sections. -More...

- -

Go to the source code of this file.

- - - - - - - - -

-Macros

#define UEL_CRITICAL_ENTER
 Enters a critical section. More...
 
#define UEL_CRITICAL_EXIT
 Exits a critical section.. More...
 
-

Detailed Description

-

Contains macros for delimitating critical sections.

-

Macro Definition Documentation

- -

◆ UEL_CRITICAL_ENTER

- -
-
- - - - -
#define UEL_CRITICAL_ENTER
-
- -

Enters a critical section.

-

This is a no-op meant to be overridden by the programmer, according to the synchronisation methods available on the target platform.

- -
-
- -

◆ UEL_CRITICAL_EXIT

- -
-
- - - - -
#define UEL_CRITICAL_EXIT
-
- -

Exits a critical section..

-

This is a no-op meant to be overridden by the programmer, according to the synchronisation methods available on the target platform.

- -
-
-
- - - - diff --git a/docs/html/critical-section_8h_source.html b/docs/html/critical-section_8h_source.html deleted file mode 100644 index e11f765..0000000 --- a/docs/html/critical-section_8h_source.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/portability/critical-section.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
critical-section.h
-
-
-Go to the documentation of this file.
1 
-
5 #ifndef CRITICAL_SECTION_H
-
6 #define CRITICAL_SECTION_H
-
7 
-
8 #ifndef UEL_CRITICAL_ENTER
-
9 
-
14 #define UEL_CRITICAL_ENTER
-
15 #endif /* UEL_CRITICAL_ENTER */
-
16 
-
17 #ifndef UEL_CRITICAL_EXIT
-
18 
-
23 #define UEL_CRITICAL_EXIT
-
24 #endif /* UEL_CRITICAL_EXIT */
-
25 
-
26 #ifdef UEL_CRITICAL_SECTION_OBJ_TYPE
-
27 
-
38 extern UEL_CRITICAL_SECTION_OBJ_TYPE uel_critical_section;
-
39 #endif /* UEL_CRITICAL_SECTION_OBJ_TYPE */
-
40 
-
41 #endif /* end of include guard: CRITICAL_SECTION_H */
-
- - - - diff --git a/docs/html/dir_000003_000004.html b/docs/html/dir_000003_000004.html deleted file mode 100644 index 60400d0..0000000 --- a/docs/html/dir_000003_000004.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system -> containers Relation - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

system → containers Relation

File in include/uevloop/systemIncludes file in include/uevloop/system/containers
event-loop.hsystem-pools.h
event-loop.hsystem-queues.h
scheduler.hsystem-pools.h
scheduler.hsystem-queues.h
signal.hsystem-pools.h
signal.hsystem-queues.h
- - - - diff --git a/docs/html/dir_000003_000005.html b/docs/html/dir_000003_000005.html deleted file mode 100644 index ded41b7..0000000 --- a/docs/html/dir_000003_000005.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system -> utils Relation - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
- - - - - diff --git a/docs/html/dir_000004_000005.html b/docs/html/dir_000004_000005.html deleted file mode 100644 index 492155a..0000000 --- a/docs/html/dir_000004_000005.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers -> utils Relation - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-

containers → utils Relation

File in include/uevloop/system/containersIncludes file in include/uevloop/utils
application.hmodule.h
system-pools.hlinked-list.h
system-pools.hobject-pool.h
system-queues.hcircular-queue.h
- - - - diff --git a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8.html b/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8.html deleted file mode 100644 index 6a6c0ed..0000000 --- a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
containers Directory Reference
-
-
-
-Directory dependency graph for containers:
-
-
include/uevloop/system/containers
- - - - - - -
- - - - - - - - - - - -

-Files

file  application.h [code]
 The application module is a convenient top-level container for the system internals.
 
file  system-pools.h [code]
 A container for the system's internal pools.
 
file  system-queues.h [code]
 A container for the system's internal queues.
 
-
- - - - diff --git a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.map b/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.map deleted file mode 100644 index 2b8ddee..0000000 --- a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.md5 b/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.md5 deleted file mode 100644 index 35732cf..0000000 --- a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -c22fe9edb2f1025991594a2e9f403659 \ No newline at end of file diff --git a/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.png b/docs/html/dir_07ca576fdadbb370dc7f55dcdd06f8b8_dep.png deleted file mode 100644 index d02c2a535b471b4b4436b6e06c4933ea6ab20f2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3596 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 diff --git a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175.html b/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175.html deleted file mode 100644 index 5c4d8a0..0000000 --- a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
utils Directory Reference
-
-
-
-Directory dependency graph for utils:
-
-
include/uevloop/utils
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Files

file  automatic-pool.h [code]
 Defines automatic pointers and automatic pools, objects that wrap object pools and objects managed by them. These wrappers provide basic automatic memory management.
 
file  circular-queue.h [code]
 Defines circular queues, fast and efficient FIFO data structures.
 
file  closure.h [code]
 Defines closures, objects that bind functions to creating and calling contexts.
 
file  conditional.h [code]
 Contains definitions of functional conditionals, structures that act as if-else constructs.
 
file  functional.h [code]
 Contains helpers for composing and augumenting closures.
 
file  iterator.h [code]
 Defines iterators, structures and functions suitable for enumerating other data structures.
 
file  linked-list.h [code]
 Defines a simple implementation of linked lists and functions to manipulate it.
 
file  module.h [code]
 
file  object-pool.h [code]
 Defines object pools, arrays of pre-allocated objects for dynamic use.
 
file  pipeline.h [code]
 Defines pipelines, structures to hold many closures and functions to invoke them sequentially, composing their functionality.
 
file  promise.h [code]
 Contains definitions for promise stores, promises and functions to manipulate them.
 
-
- - - - diff --git a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.map b/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.map deleted file mode 100644 index e364212..0000000 --- a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.md5 b/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.md5 deleted file mode 100644 index f9334e4..0000000 --- a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -47e250b26559c37b726b1bdc4d5ece39 \ No newline at end of file diff --git a/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.png b/docs/html/dir_0b107f87463abbc8b2ae6ed1ed981175_dep.png deleted file mode 100644 index f725e77cb07b50b7f9aeb424375d860fa3a7da42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1967 zcma)-c`zGz8^_b_7NxpdT2>r&)Uj`=I>Lk~+PKOp>MquuRVnLE9Lee|b%lCeMKtQl zTbgQWl{gYdg9g<&N)bmx990pC#+^62Gw-~!^X|;P^PAuAnfd+kJTsr~Jl}7olcSBK zI8Yn_07%-|LS2M4MR?I-BEq-FcKC|0hy>c(Kmmf^Ph}^*000mTwu4%_BCwwsDGuX& z#V(HVdE{0=TlQ0k%tjjMMo_>F323cx^$IUyrV5CV zM|cC4FuJJ@z3PZTs8{qpn3ii$Rho6yadXPfiavnNMay5yd^;moiaI$X@AMc?KQ+4gRak7QVVeceR~d8Vp|z}SwM5OIzs)@&I#5T6L!n%Y z&sIA(kjOo?`S-P}p-rXLHhJe{W!W^t`itIo2!@7-y|rMUth3+B%HHz&5buF^PH}Z> zevqCHDPg@^`OlPm`j5$aMZWFvh$MMGHT|~OKPJDc%z2E3WVW^S<_;1F?m5;c6%{`N zk_AUPbEtz`4&_E^Q&U>o+?cR1B4CTtUp_E|T{Of|N1?GiL|M5mzt!)~jN2T7ncz^d zFD)hYIFOoE>q9{iMwoJPV@N)uxr66oa=Q*<8OqWHqdHJsN_nY9TGjl}z3s`?*tM@T z#$XC&iNI>TGIe{IQ3hjJLN_?(_z+CqU;mA{-=4s}q^Fm*wWXPejr{Nu5;42#KTlTM zU?hE8PDooGEa4#)x`LZ~_2nws+`S9Da6tpG5pRk^wH0h^lq6wC0!h%66h(D)bV$#y z{@1Vfcs8+g6--UHd|vrnHr`=qXprj}=imL#pp*h>T6 zywUp(BO(Mzr!z@NZaR}!QM99<#4jG3h?8yF6BF`<2$DndxLyPu$d^aBF)wBPZ94$` zRk2_H#f*%M=rUtfRq^uS^?k+olO^acn`cu~EoaG$wbt49@e`aVPtUK(WO6cx3hu)g z@DK-ug)lKOv4w^1qw#Uq{CquJS67!(qdXAUcXYsi;az@OQc|??>6$7)MI~UCG`9DS zBU)Boj%77_UeOD8_eQhZY|hZs%rrvvg(OT&riDtsi0~x_X&V}1VYnZHmT8k=@D2+Y zOcU=2dJ+8Q`sQ5c$zK{9b-61m+jN_YFVO;6FigM_oy^L}P*qVW1%t;5vnc zhxu{_p`2Z&bfO|!D3rAjY)b?qc&ttzZghFX%((wvUjAi~5MEVP;B((_H842+@NiaO z3Mwg%c>PmOD7^|UB~|tP_g+@+?;AP%Z+`aCyc~XFXD9C02R7ThG4rI=M0q24$kKpw z4IY0rVbkDi(Fac6ZNw2KfJCCy{>B@*q<&OLqeZ`he@N@TiUKHMQdgL?c{~gTi~024 zmqYO$9(d%4LY?5UmRnN@_4Q`wWmt=}8F3*JUs8#+>`zW8{~|Z#j`8u0VnVN!hAU~ozuN=Bk3ScM)&RV>rCeP^V&WBTPh&X>D43N zakr>^2ByN+b4qJ;3?H?Ed=xQPdvbT3i+jHwCE+S^J2khSHXBo0Q zpNTmF<8R^o`I{A;WbTra-bS^#xH;uq&UcF=kMzt{m6adv?q2%HEa>PYoG{RKWS`X0 zk5(-=W(V)A7Y$+MMqY*>llPYGA|u1Q&Sa~ZX=!D=eJdcl?M^g!VEa;%_XW*nN%0y@ zFqqIMey~c*1jp3He0hectjxc{o}5Xi=3hfbYio=dP0ut25e=Pve3lHA6cl<&4e+fA zY(E^!H1=P`&EfMOKT^4|adAp9VH4v%Y32Yy)4mDa)#=nVvwy7H z)z@R^aUfkbsJ}lmlTt}O{?U=y+>8?}grL!AaS0D+&sLgb`wlrEs;1$X{`V>HKe9vi zfh7JsI?pVLW=5)6PwlV5*AAbmZ20sXU##FVI?9p)0$KUZ5Sh+r@OFH$OXq(h;Lp8C zhrOli>o;?(do4DskQsT5h!*p8%y6iIOm>Jezj|LwbA>J_sI{k0ysH^m``fq@HosVj ehFuz>oM?Dt8Ce!Xl@lf~z|P7M`uw{8{eJ_6A=&2u diff --git a/docs/html/dir_1c07dc2bb514f68216b7275ce8a19048.html b/docs/html/dir_1c07dc2bb514f68216b7275ce8a19048.html deleted file mode 100644 index ac6e3d0..0000000 --- a/docs/html/dir_1c07dc2bb514f68216b7275ce8a19048.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/portability Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
portability Directory Reference
-
-
- - - - - -

-Files

file  critical-section.h [code]
 Contains macros for delimitating critical sections.
 
-
- - - - diff --git a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e.html b/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e.html deleted file mode 100644 index 311bad8..0000000 --- a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
system Directory Reference
-
-
-
-Directory dependency graph for system:
-
-
include/uevloop/system
- - - - - - - - -
- - -

-Directories

- - - - - - - - - - - - - -

-Files

file  event-loop.h [code]
 Module responsible for running enqueued events and process them accordingly.
 
file  event.h [code]
 Defines events and methods to configure events.
 
file  scheduler.h [code]
 Module responsible for keeping track of time and tasks to be run in the future.
 
file  signal.h [code]
 Defines signals and relays, structures used to communicate asynchronously between distant parts of the application.
 
-
- - - - diff --git a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.map b/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.map deleted file mode 100644 index b3fba2a..0000000 --- a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.md5 b/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.md5 deleted file mode 100644 index 796c15a..0000000 --- a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -27d2246bf8988d04a04bf2ac5dd068cc \ No newline at end of file diff --git a/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.png b/docs/html/dir_abb95c841d2d19e4a38c0aebc4f3511e_dep.png deleted file mode 100644 index 41952527bcd1b5901c79286e69eec99ce7701bf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5310 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 F{|Cfw;~@Y5 diff --git a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d.html b/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d.html deleted file mode 100644 index 4578d81..0000000 --- a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
uevloop Directory Reference
-
-
-
-Directory dependency graph for uevloop:
-
-
include/uevloop
- - - - - - - - -
- - -

-Directories

- - - - -

-Files

file  config.h [code]
 Central repository of system configuration. This is meant to be edited by the programmer as needed.
 
-
- - - - diff --git a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.map b/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.map deleted file mode 100644 index 8a33df2..0000000 --- a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.md5 b/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.md5 deleted file mode 100644 index 5f7f4b4..0000000 --- a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -c400a420274262f99f6c16af2141fca4 \ No newline at end of file diff --git a/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.png b/docs/html/dir_bf342d982ec00e45652f5a4c01fdc40d_dep.png deleted file mode 100644 index c35a6b4aa84e834e53caa90bddae3148c51095ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5359 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 H&jbGl!=VFo diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html b/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html deleted file mode 100644 index 92b58a9..0000000 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - -µEvLoop: include Directory Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
include Directory Reference
-
-
-
-Directory dependency graph for include:
-
-
include
- - - - -
- - -

-Directories

-
- - - - diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.map b/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.map deleted file mode 100644 index 9f1f5f3..0000000 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.md5 b/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.md5 deleted file mode 100644 index 9b19834..0000000 --- a/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.md5 +++ /dev/null @@ -1 +0,0 @@ -e3a17f216c33f837c64ca30f197dfe24 \ No newline at end of file diff --git a/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.png b/docs/html/dir_d44c64559bbebec7f509842c48db8b23_dep.png deleted file mode 100644 index 8871dd3fe89391165ed22525832ea9158056e3ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2028 zcma)7X*3(?8ny*hrc`S?CHE?gF_u@0|Lf*m9&A~>fF5G+9u4{)#n3-P}#Tvv6WkdQ>V9rz{$QM$%Txit<~qi(^y zFW-NV4SAhr5lXn9F5~>(Xb{lr168>t;cggGEs~*m&g45r9tH<5DY^H2;F;a60hl$; zg!8`C=L~5z_~SrpadwMdZVbwa_ge*^Ynz0TWCHzqrL)pux}6jBc_MG?V1MD@h`Ze4 zC#68^>k|`>()3+b6?!Hk0+^K5s?Rh}y&@*{=HE{KGN~frl4m?Dac@=rI~8GP?hQ1K z9SkF9hPcmp{(`|Y1XA8^kx>ShYD{VOcpc+2=&8y?^RyT6^3w8VwSC z0Wb$!2PWfOqE7woE99SMYs!3HLC!D%%Dl0pM1|qr6EGYYywUBTtlZ=GRFv?<^eDCg z{+V$aWq#S92KTSMVS`k2MTPa7|KRig!8Ij+E(D3>(JE~e6ZD@U*T_5i-I8+)h%Wdm zXIfW6Qu#D~{}DvGEl;w8cTAV10c(G#uGAqwC!~c)!t= z;C5C~ah8&j!i`2-lM;5>`-XuWKl?HemP$S4r9{LtXvG zjpd!?6vqg&>(?PJE>8+h6CrwrN=_?O-+TybhNkYDCDxBik!)b z2~7}acV}ns=vbLrSy`D=)7g35#H1wqR|27=xOgNu#?zA_0*u2A4HG_mn3ShYNAla6 zxkUInVqjpPd!G~Q?VaV-m6`o>?h;ZmKB0O7xy%{u`0>Za8ZE}bMoPu_QEK*eHF!8- zf2k~zvS}eLm$b(gexkjN^{WGEYG$q02miJx71lDHW2=W1C!VV0`vZvdj)4B3L#HD@)!$qGfUm8s4JI-CFG`M$ zR(}5cS07O>hz1Yl%=#1iYBRaq0J%Dx3c9Miyl3gF(YgGU zm9TqGn^p%`LM^ zN`DwWKR#Y-sU2^Av>!Bz^}D*WdvI5eI@47Mx{LQZS|Lza@1xQ!VU`vswC1c6n=l{(j^ec=0c&Xo0|Yj zef>o?(ca!(phtVW7bW>9FTA;_NyoccM^iIsZHf$QW8OCyHFX3B1qCH=R|O&tg+fge zxDO!^$YB1pCR6?)(9Z5%WM{*rE3OeFpW%^1R+9{Oot3iT>*rj+^nc%d%p-yhKQ%mM zv&);BCdAVw{k4i!_^X#)EGz<&lN~Kk59xJ7Ei=47b3730>>qlJhQ`K#s(8=j9E(>F zu&(Z*nJ2iCw#saanQo3qy=@YW+Ce5>9q&{|?~mQE0o@Vbbhy@qdkAShM zx4XWc8evQQ?Nt9iwnCOYeB0=I2br{q&3NGai>RvUYwB0(Sq0 z4}BZu!jw}hTdkC19#|_L@Di!^*!y*!Oo;v4)Mm2J_qzRXgL^NFh73igOzX!a03QCW g693%hzLn<#)^0yH*s;Y73hZ0R&dL#7XW@_f3u7boEdT%j diff --git a/docs/html/doc.png b/docs/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css deleted file mode 100644 index 73ecbb2..0000000 --- a/docs/html/doxygen.css +++ /dev/null @@ -1,1771 +0,0 @@ -/* The standard CSS for doxygen 1.8.17 */ - -body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; -} - -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; -} - -/* @group Heading Levels */ - -h1.groupheader { - font-size: 150%; -} - -.title { - font: 400 14px/28px Roboto,sans-serif; - font-size: 150%; - font-weight: bold; - margin: 10px 2px; -} - -h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; - font-size: 150%; - font-weight: normal; - margin-top: 1.75em; - padding-top: 8px; - padding-bottom: 4px; - width: 100%; -} - -h3.groupheader { - font-size: 100%; -} - -h1, h2, h3, h4, h5, h6 { - -webkit-transition: text-shadow 0.5s linear; - -moz-transition: text-shadow 0.5s linear; - -ms-transition: text-shadow 0.5s linear; - -o-transition: text-shadow 0.5s linear; - transition: text-shadow 0.5s linear; - margin-right: 15px; -} - -h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; -} - -dt { - font-weight: bold; -} - -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - -p.startli, p.startdd { - margin-top: 2px; -} - -th p.starttd, p.intertd, p.endtd { - font-size: 100%; - font-weight: 700; -} - -p.starttd { - margin-top: 0px; -} - -p.endli { - margin-bottom: 0px; -} - -p.enddd { - margin-bottom: 4px; -} - -p.endtd { - margin-bottom: 2px; -} - -p.interli { -} - -p.interdd { -} - -p.intertd { -} - -/* @end */ - -caption { - font-weight: bold; -} - -span.legend { - font-size: 70%; - text-align: center; -} - -h3.version { - font-size: 90%; - text-align: center; -} - -div.qindex, div.navtab{ - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; -} - -div.qindex, div.navpath { - width: 100%; - line-height: 140%; -} - -div.navtab { - margin-right: 15px; -} - -/* @group Link Styling */ - -a { - color: #3D578C; - font-weight: normal; - text-decoration: none; -} - -.contents a:visited { - color: #4665A2; -} - -a:hover { - text-decoration: underline; -} - -a.qindex { - font-weight: bold; -} - -a.qindexHL { - font-weight: bold; - background-color: #9CAFD4; - color: #FFFFFF; - border: 1px double #869DCA; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; -} - -a.el { - font-weight: bold; -} - -a.elRef { -} - -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; -} - -a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} - -/* @end */ - -dl.el { - margin-left: -1cm; -} - -ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ -} - -#side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ -} - -#main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ -} - -.fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; -} - -pre.fragment { - border: 1px solid #C4CFE5; - background-color: #FBFCFD; - padding: 4px 6px; - margin: 4px 8px 4px 2px; - overflow: auto; - word-wrap: break-word; - font-size: 9pt; - line-height: 125%; - font-family: monospace, fixed; - font-size: 105%; -} - -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; -} - -div.line { - font-family: monospace, fixed; - font-size: 13px; - min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - text-indent: -53px; - padding-left: 53px; - padding-bottom: 0px; - margin: 0px; - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -div.line:after { - content:"\000A"; - white-space: pre; -} - -div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; -} - - -span.lineno { - padding-right: 4px; - text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; -} -span.lineno a { - background-color: #D8D8D8; -} - -span.lineno a:hover { - background-color: #C8C8C8; -} - -.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -div.ah, span.ah { - background-color: black; - font-weight: bold; - color: #FFFFFF; - margin-bottom: 3px; - margin-top: 3px; - padding: 0.2em; - border: solid thin #333; - border-radius: 0.5em; - -webkit-border-radius: .5em; - -moz-border-radius: .5em; - box-shadow: 2px 2px 3px #999; - -webkit-box-shadow: 2px 2px 3px #999; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); - background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); -} - -div.classindex ul { - list-style: none; - padding-left: 0; -} - -div.classindex span.ai { - display: inline-block; -} - -div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; -} - -div.groupText { - margin-left: 16px; - font-style: italic; -} - -body { - background-color: white; - color: black; - margin: 0; -} - -div.contents { - margin-top: 10px; - margin-left: 12px; - margin-right: 8px; -} - -td.indexkey { - background-color: #EBEFF6; - font-weight: bold; - border: 1px solid #C4CFE5; - margin: 2px 0px 2px 0; - padding: 2px 10px; - white-space: nowrap; - vertical-align: top; -} - -td.indexvalue { - background-color: #EBEFF6; - border: 1px solid #C4CFE5; - padding: 2px 10px; - margin: 2px 0px; -} - -tr.memlist { - background-color: #EEF1F7; -} - -p.formulaDsp { - text-align: center; -} - -img.formulaDsp { - -} - -img.formulaInl, img.inline { - vertical-align: middle; -} - -div.center { - text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; -} - -div.center img { - border: 0px; -} - -address.footer { - text-align: right; - padding-right: 12px; -} - -img.footer { - border: 0px; - vertical-align: middle; -} - -/* @group Code Colorization */ - -span.keyword { - color: #008000 -} - -span.keywordtype { - color: #604020 -} - -span.keywordflow { - color: #e08000 -} - -span.comment { - color: #800000 -} - -span.preprocessor { - color: #806020 -} - -span.stringliteral { - color: #002080 -} - -span.charliteral { - color: #008080 -} - -span.vhdldigit { - color: #ff00ff -} - -span.vhdlchar { - color: #000000 -} - -span.vhdlkeyword { - color: #700070 -} - -span.vhdllogic { - color: #ff0000 -} - -blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; -} - -/* @end */ - -/* -.search { - color: #003399; - font-weight: bold; -} - -form.search { - margin-bottom: 0px; - margin-top: 0px; -} - -input.search { - font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -*/ - -td.tiny { - font-size: 75%; -} - -.dirtab { - padding: 4px; - border-collapse: collapse; - border: 1px solid #A3B4D7; -} - -th.dirtab { - background: #EBEFF6; - font-weight: bold; -} - -hr { - height: 0px; - border: none; - border-top: 1px solid #4A6AAA; -} - -hr.footer { - height: 1px; -} - -/* @group Member Descriptions */ - -table.memberdecls { - border-spacing: 0px; - padding: 0px; -} - -.memberdecls td, .fieldtable tr { - -webkit-transition-property: background-color, box-shadow; - -webkit-transition-duration: 0.5s; - -moz-transition-property: background-color, box-shadow; - -moz-transition-duration: 0.5s; - -ms-transition-property: background-color, box-shadow; - -ms-transition-duration: 0.5s; - -o-transition-property: background-color, box-shadow; - -o-transition-duration: 0.5s; - transition-property: background-color, box-shadow; - transition-duration: 0.5s; -} - -.memberdecls td.glow, .fieldtable tr.glow { - background-color: cyan; - box-shadow: 0 0 15px cyan; -} - -.mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; -} - -.mdescLeft, .mdescRight { - padding: 0px 8px 4px 8px; - color: #555; -} - -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; -} - -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; -} - -.memItemRight, .memTemplItemRight { - width: 100%; -} - -.memTemplParams { - color: #4665A2; - white-space: nowrap; - font-size: 80%; -} - -/* @end */ - -/* @group Member Details */ - -/* Styles for detailed member documentation */ - -.memtitle { - padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - margin-bottom: -1px; - background-image: url('nav_f.png'); - background-repeat: repeat-x; - background-color: #E2E8F2; - line-height: 1.25; - font-weight: 300; - float:left; -} - -.permalink -{ - font-size: 65%; - display: inline-block; - vertical-align: middle; -} - -.memtemplate { - font-size: 80%; - color: #4665A2; - font-weight: normal; - margin-left: 9px; -} - -.memnav { - background-color: #EBEFF6; - border: 1px solid #A3B4D7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} - -.mempage { - width: 100%; -} - -.memitem { - padding: 0; - margin-bottom: 10px; - margin-right: 5px; - -webkit-transition: box-shadow 0.5s linear; - -moz-transition: box-shadow 0.5s linear; - -ms-transition: box-shadow 0.5s linear; - -o-transition: box-shadow 0.5s linear; - transition: box-shadow 0.5s linear; - display: table !important; - width: 100%; -} - -.memitem.glow { - box-shadow: 0 0 15px cyan; -} - -.memname { - font-weight: 400; - margin-left: 6px; -} - -.memname td { - vertical-align: bottom; -} - -.memproto, dl.reflist dt { - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 0px 6px 0px; - color: #253555; - font-weight: bold; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - background-color: #DFE5F1; - /* opera specific markup */ - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - border-top-right-radius: 4px; - /* firefox specific markup */ - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - -moz-border-radius-topright: 4px; - /* webkit specific markup */ - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - -webkit-border-top-right-radius: 4px; - -} - -.overload { - font-family: "courier new",courier,monospace; - font-size: 65%; -} - -.memdoc, dl.reflist dd { - border-bottom: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; - padding: 6px 10px 2px 10px; - background-color: #FBFCFD; - border-top-width: 0; - background-image:url('nav_g.png'); - background-repeat:repeat-x; - background-color: #FFFFFF; - /* opera specific markup */ - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); - /* firefox specific markup */ - -moz-border-radius-bottomleft: 4px; - -moz-border-radius-bottomright: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; - /* webkit specific markup */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -dl.reflist dt { - padding: 5px; -} - -dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; -} - -.paramkey { - text-align: right; -} - -.paramtype { - white-space: nowrap; -} - -.paramname { - color: #602020; - white-space: nowrap; -} -.paramname em { - font-style: normal; -} -.paramname code { - line-height: 14px; -} - -.params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} - -.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; -} - -.params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - -.params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; -} - -table.mlabels { - border-spacing: 0px; -} - -td.mlabels-left { - width: 100%; - padding: 0px; -} - -td.mlabels-right { - vertical-align: bottom; - padding: 0px; - white-space: nowrap; -} - -span.mlabels { - margin-left: 8px; -} - -span.mlabel { - background-color: #728DC1; - border-top:1px solid #5373B4; - border-left:1px solid #5373B4; - border-right:1px solid #C4CFE5; - border-bottom:1px solid #C4CFE5; - text-shadow: none; - color: white; - margin-right: 4px; - padding: 2px 3px; - border-radius: 3px; - font-size: 7pt; - white-space: nowrap; - vertical-align: middle; -} - - - -/* @end */ - -/* these are for tree view inside a (index) page */ - -div.directory { - margin: 10px 0px; - border-top: 1px solid #9CAFD4; - border-bottom: 1px solid #9CAFD4; - width: 100%; -} - -.directory table { - border-collapse:collapse; -} - -.directory td { - margin: 0px; - padding: 0px; - vertical-align: top; -} - -.directory td.entry { - white-space: nowrap; - padding-right: 6px; - padding-top: 3px; -} - -.directory td.entry a { - outline:none; -} - -.directory td.entry a img { - border: none; -} - -.directory td.desc { - width: 100%; - padding-left: 6px; - padding-right: 6px; - padding-top: 3px; - border-left: 1px solid rgba(0,0,0,0.05); -} - -.directory tr.even { - padding-left: 6px; - background-color: #F7F8FB; -} - -.directory img { - vertical-align: -30%; -} - -.directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; -} - -.directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; -} - -.arrow { - color: #9CAFD4; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - cursor: pointer; - font-size: 80%; - display: inline-block; - width: 16px; - height: 22px; -} - -.icon { - font-family: Arial, Helvetica; - font-weight: bold; - font-size: 12px; - height: 14px; - width: 16px; - display: inline-block; - background-color: #728DC1; - color: white; - text-align: center; - border-radius: 4px; - margin-left: 2px; - margin-right: 2px; -} - -.icona { - width: 24px; - height: 22px; - display: inline-block; -} - -.iconfopen { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderopen.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.iconfclosed { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('folderclosed.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -.icondoc { - width: 24px; - height: 18px; - margin-bottom: 4px; - background-image:url('doc.png'); - background-position: 0px -4px; - background-repeat: repeat-y; - vertical-align:top; - display: inline-block; -} - -table.directory { - font: 400 14px Roboto,sans-serif; -} - -/* @end */ - -div.dynheader { - margin-top: 8px; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -address { - font-style: normal; - color: #2A3D61; -} - -table.doxtable caption { - caption-side: top; -} - -table.doxtable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -table.fieldtable { - /*width: 100%;*/ - margin-bottom: 10px; - border: 1px solid #A8B8D9; - border-spacing: 0px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; - -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); - box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); -} - -.fieldtable td, .fieldtable th { - padding: 3px 7px 2px; -} - -.fieldtable td.fieldtype, .fieldtable td.fieldname { - white-space: nowrap; - border-right: 1px solid #A8B8D9; - border-bottom: 1px solid #A8B8D9; - vertical-align: top; -} - -.fieldtable td.fieldname { - padding-top: 3px; -} - -.fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ -} - -.fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - -.fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; -} - -.fieldtable tr:last-child td { - border-bottom: none; -} - -.fieldtable th { - background-image:url('nav_f.png'); - background-repeat:repeat-x; - background-color: #E2E8F2; - font-size: 90%; - color: #253555; - padding-bottom: 4px; - padding-top: 5px; - text-align:left; - font-weight: 400; - -moz-border-radius-topleft: 4px; - -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom: 1px solid #A8B8D9; -} - - -.tabsearch { - top: 0px; - left: 10px; - height: 36px; - background-image: url('tab_b.png'); - z-index: 101; - overflow: hidden; - font-size: 13px; -} - -.navpath ul -{ - font-size: 11px; - background-image:url('tab_b.png'); - background-repeat:repeat-x; - background-position: 0 -5px; - height:30px; - line-height:30px; - color:#8AA0CC; - border:solid 1px #C2CDE4; - overflow:hidden; - margin:0px; - padding:0px; -} - -.navpath li -{ - list-style-type:none; - float:left; - padding-left:10px; - padding-right:15px; - background-image:url('bc_s.png'); - background-repeat:no-repeat; - background-position:right; - color:#364D7C; -} - -.navpath li.navelem a -{ - height:32px; - display:block; - text-decoration: none; - outline: none; - color: #283A5D; - font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; - text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); - text-decoration: none; -} - -.navpath li.navelem a:hover -{ - color:#6884BD; -} - -.navpath li.footer -{ - list-style-type:none; - float:right; - padding-left:10px; - padding-right:15px; - background-image:none; - background-repeat:no-repeat; - background-position:right; - color:#364D7C; - font-size: 8pt; -} - - -div.summary -{ - float: right; - font-size: 8pt; - padding-right: 5px; - width: 50%; - text-align: right; -} - -div.summary a -{ - white-space: nowrap; -} - -table.classindex -{ - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; -} - -div.ingroups -{ - font-size: 8pt; - width: 50%; - text-align: left; -} - -div.ingroups a -{ - white-space: nowrap; -} - -div.header -{ - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; - margin: 0px; - border-bottom: 1px solid #C4CFE5; -} - -div.headertitle -{ - padding: 5px 5px 5px 10px; -} - -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - -dl { - padding: 0 0 0 0; -} - -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; -} - -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; -} - -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; -} - -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; -} - -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; -} - -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; -} - -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; -} - -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; -} - -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; -} - -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; -} - -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; -} - -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; -} - -dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; -} - -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; -} - -dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; -} - -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; -} - -dl.section dd { - margin-bottom: 6px; -} - - -#projectlogo -{ - text-align: center; - vertical-align: bottom; - border-collapse: separate; -} - -#projectlogo img -{ - border: 0px none; -} - -#projectalign -{ - vertical-align: middle; -} - -#projectname -{ - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; -} - -#projectbrief -{ - font: 120% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#projectnumber -{ - font: 50% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 0px; -} - -#titlearea -{ - padding: 0px; - margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; -} - -.image -{ - text-align: center; -} - -.dotgraph -{ - text-align: center; -} - -.mscgraph -{ - text-align: center; -} - -.plantumlgraph -{ - text-align: center; -} - -.diagraph -{ - text-align: center; -} - -.caption -{ - font-weight: bold; -} - -div.zoom -{ - border: 1px solid #90A5CE; -} - -dl.citelist { - margin-bottom:50px; -} - -dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; -} - -dl.citelist dd { - margin:2px 0; - padding:5px 0; -} - -div.toc { - padding: 14px 25px; - background-color: #F4F6FA; - border: 1px solid #D8DFEE; - border-radius: 7px 7px 7px 7px; - float: right; - height: auto; - margin: 0 8px 10px 10px; - width: 200px; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; -} - -div.toc li { - background: url("bdwn.png") no-repeat scroll 0 5px transparent; - font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; - margin-top: 5px; - padding-left: 10px; - padding-top: 2px; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; -} - -div.toc h3 { - font: bold 12px/1.2 Arial,FreeSans,sans-serif; - color: #4665A2; - border-bottom: 0 none; - margin: 0; -} - -div.toc ul { - list-style: none outside none; - border: medium none; - padding: 0px; -} - -div.toc li.level1 { - margin-left: 0px; -} - -div.toc li.level2 { - margin-left: 15px; -} - -div.toc li.level3 { - margin-left: 30px; -} - -div.toc li.level4 { - margin-left: 45px; -} - -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; -} - -.inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.inherit_header td { - padding: 6px 0px 2px 5px; -} - -.inherit { - display: none; -} - -tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; -} - -/* tooltip related style info */ - -.ttc { - position: absolute; - display: none; -} - -#powerTip { - cursor: default; - white-space: nowrap; - background-color: white; - border: 1px solid gray; - border-radius: 4px 4px 4px 4px; - box-shadow: 1px 1px 7px gray; - display: none; - font-size: smaller; - max-width: 80%; - opacity: 0.9; - padding: 1ex 1em 1em; - position: absolute; - z-index: 2147483647; -} - -#powerTip div.ttdoc { - color: grey; - font-style: italic; -} - -#powerTip div.ttname a { - font-weight: bold; -} - -#powerTip div.ttname { - font-weight: bold; -} - -#powerTip div.ttdeci { - color: #006318; -} - -#powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; -} - -#powerTip:before, #powerTip:after { - content: ""; - position: absolute; - margin: 0px; -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.s:after, #powerTip.s:before, -#powerTip.w:after, #powerTip.w:before, -#powerTip.e:after, #powerTip.e:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.nw:after, #powerTip.nw:before, -#powerTip.sw:after, #powerTip.sw:before { - border: solid transparent; - content: " "; - height: 0; - width: 0; - position: absolute; -} - -#powerTip.n:after, #powerTip.s:after, -#powerTip.w:after, #powerTip.e:after, -#powerTip.nw:after, #powerTip.ne:after, -#powerTip.sw:after, #powerTip.se:after { - border-color: rgba(255, 255, 255, 0); -} - -#powerTip.n:before, #powerTip.s:before, -#powerTip.w:before, #powerTip.e:before, -#powerTip.nw:before, #powerTip.ne:before, -#powerTip.sw:before, #powerTip.se:before { - border-color: rgba(128, 128, 128, 0); -} - -#powerTip.n:after, #powerTip.n:before, -#powerTip.ne:after, #powerTip.ne:before, -#powerTip.nw:after, #powerTip.nw:before { - top: 100%; -} - -#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} -#powerTip.n:before { - border-top-color: #808080; - border-width: 11px; - margin: 0px -11px; -} -#powerTip.n:after, #powerTip.n:before { - left: 50%; -} - -#powerTip.nw:after, #powerTip.nw:before { - right: 14px; -} - -#powerTip.ne:after, #powerTip.ne:before { - left: 14px; -} - -#powerTip.s:after, #powerTip.s:before, -#powerTip.se:after, #powerTip.se:before, -#powerTip.sw:after, #powerTip.sw:before { - bottom: 100%; -} - -#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; - border-width: 10px; - margin: 0px -10px; -} - -#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; - border-width: 11px; - margin: 0px -11px; -} - -#powerTip.s:after, #powerTip.s:before { - left: 50%; -} - -#powerTip.sw:after, #powerTip.sw:before { - right: 14px; -} - -#powerTip.se:after, #powerTip.se:before { - left: 14px; -} - -#powerTip.e:after, #powerTip.e:before { - left: 100%; -} -#powerTip.e:after { - border-left-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.e:before { - border-left-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -#powerTip.w:after, #powerTip.w:before { - right: 100%; -} -#powerTip.w:after { - border-right-color: #FFFFFF; - border-width: 10px; - top: 50%; - margin-top: -10px; -} -#powerTip.w:before { - border-right-color: #808080; - border-width: 11px; - top: 50%; - margin-top: -11px; -} - -@media print -{ - #top { display: none; } - #side-nav { display: none; } - #nav-path { display: none; } - body { overflow:visible; } - h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } - .summary { display: none; } - .memitem { page-break-inside: avoid; } - #doc-content - { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } -} - -/* @group Markdown */ - -/* -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTableHead tr { -} - -table.markdownTableBodyLeft td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft { - text-align: left -} - -th.markdownTableHeadRight { - text-align: right -} - -th.markdownTableHeadCenter { - text-align: center -} -*/ - -table.markdownTable { - border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; -} - -table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; - padding: 3px 7px 2px; -} - -table.markdownTable tr { -} - -th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; - font-size: 110%; - padding-bottom: 4px; - padding-top: 5px; -} - -th.markdownTableHeadLeft, td.markdownTableBodyLeft { - text-align: left -} - -th.markdownTableHeadRight, td.markdownTableBodyRight { - text-align: right -} - -th.markdownTableHeadCenter, td.markdownTableBodyCenter { - text-align: center -} - -.DocNodeRTL { - text-align: right; - direction: rtl; -} - -.DocNodeLTR { - text-align: left; - direction: ltr; -} - -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; -} - -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; -} - -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; -} -/* @end */ - -u { - text-decoration: underline; -} - diff --git a/docs/html/doxygen.png b/docs/html/doxygen.png deleted file mode 100644 index 3ff17d807fd8aa003bed8bb2a69e8f0909592fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3779 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 diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js deleted file mode 100644 index ea0a7b3..0000000 --- a/docs/html/dynsections.js +++ /dev/null @@ -1,120 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function toggleVisibility(linkObj) -{ - var base = $(linkObj).attr('id'); - var summary = $('#'+base+'-summary'); - var content = $('#'+base+'-content'); - var trigger = $('#'+base+'-trigger'); - var src=$(trigger).attr('src'); - if (content.is(':visible')===true) { - content.hide(); - summary.show(); - $(linkObj).addClass('closed').removeClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); - } else { - content.show(); - summary.hide(); - $(linkObj).removeClass('closed').addClass('opened'); - $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); - } - return false; -} - -function updateStripes() -{ - $('table.directory tr'). - removeClass('even').filter(':visible:even').addClass('even'); -} - -function toggleLevel(level) -{ - $('table.directory tr').each(function() { - var l = this.id.split('_').length-1; - var i = $('#img'+this.id.substring(3)); - var a = $('#arr'+this.id.substring(3)); - if (l - - - - - - -µEvLoop: include/uevloop/system/event-loop.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
event-loop.h File Reference
-
-
- -

Module responsible for running enqueued events and process them accordingly. -More...

-
-Include dependency graph for event-loop.h:
-
-
- - - - - - - - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_evloop_t
 The event loop object. More...
 
- - - - - - - - - - - - - - - - -

-Functions

void uel_evloop_init (uel_evloop_t *event_loop, uel_syspools_t *pools, uel_sysqueues_t *queues)
 Initialises an event loop. More...
 
void uel_evloop_run (uel_evloop_t *event_loop)
 Triggers a runloop. More...
 
void uel_evloop_enqueue_closure (uel_evloop_t *event_loop, uel_closure_t *closure, void *value)
 Enqueues a closure to be invoked. More...
 
uel_event_t * uel_evloop_observe (uel_evloop_t *event_loop, volatile uintptr_t *condition_var, uel_closure_t *closure)
 Observes a value and reacts to changes in it. More...
 
uel_event_t * uel_evloop_observe_once (uel_evloop_t *event_loop, volatile uintptr_t *condition_var, uel_closure_t *closure)
 Observes a value and reacts once to changes in it. Afterwards, the observer will be destroyed. More...
 
-

Detailed Description

-

Module responsible for running enqueued events and process them accordingly.

-

Function Documentation

- -

◆ uel_evloop_enqueue_closure()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_evloop_enqueue_closure (uel_evloop_t * event_loop,
uel_closure_t * closure,
void * value 
)
-
- -

Enqueues a closure to be invoked.

-
Parameters
- - - - -
event_loopThe uel_evloop_t instance into which the closure will be enqueued
closureThe closure to be enqueued
valueThe value to invoked the closure with
-
-
- -
-
- -

◆ uel_evloop_init()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_evloop_init (uel_evloop_t * event_loop,
uel_syspools_t * pools,
uel_sysqueues_t * queues 
)
-
- -

Initialises an event loop.

-
Parameters
- - - - -
event_loopThe uel_evloop_t instance to be initialised
poolsThe system's internal pools
queuesThe system's internal queues
-
-
- -
-
- -

◆ uel_evloop_observe()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uel_event_t* uel_evloop_observe (uel_evloop_t * event_loop,
volatile uintptr_t * condition_var,
uel_closure_t * closure 
)
-
- -

Observes a value and reacts to changes in it.

-
Parameters
- - - - -
event_loopThe event loop where to register this observer
condition_varThe address of some data that should be observed
closureThe closure to be invoked when the observed value changes
-
-
-
Returns
The observer event representing this observation operation
- -
-
- -

◆ uel_evloop_observe_once()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uel_event_t* uel_evloop_observe_once (uel_evloop_t * event_loop,
volatile uintptr_t * condition_var,
uel_closure_t * closure 
)
-
- -

Observes a value and reacts once to changes in it. Afterwards, the observer will be destroyed.

-
Parameters
- - - - -
event_loopThe event loop where to register this observer
condition_varThe address of some data that should be observed
closureThe closure to be invoked when the observed value changes
-
-
-
Returns
The observer event representing this observation operation
- -
-
- -

◆ uel_evloop_run()

- -
-
- - - - - - - - -
void uel_evloop_run (uel_evloop_t * event_loop)
-
- -

Triggers a runloop.

-

This function flushes the event queue and processes each event in it. Afterwards, depending on the event type, it disposes of the event in different ways.

-

Each iteration of this cycle is called a runloop.

-
Parameters
- - -
event_loopThe uel_evloop_t instance to be run
-
-
- -
-
-
- - - - diff --git a/docs/html/event-loop_8h__dep__incl.map b/docs/html/event-loop_8h__dep__incl.map deleted file mode 100644 index b4823e3..0000000 --- a/docs/html/event-loop_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/event-loop_8h__dep__incl.md5 b/docs/html/event-loop_8h__dep__incl.md5 deleted file mode 100644 index 68a4cfd..0000000 --- a/docs/html/event-loop_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -2ae711a170678bdf59b6ec760b031efe \ No newline at end of file diff --git a/docs/html/event-loop_8h__dep__incl.png b/docs/html/event-loop_8h__dep__incl.png deleted file mode 100644 index 31dbc6ef021ef41986fb7e1c2d3cb912ce93380b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5790 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 diff --git a/docs/html/event-loop_8h__incl.map b/docs/html/event-loop_8h__incl.map deleted file mode 100644 index 67dc7b8..0000000 --- a/docs/html/event-loop_8h__incl.map +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/docs/html/event-loop_8h__incl.md5 b/docs/html/event-loop_8h__incl.md5 deleted file mode 100644 index e47c46c..0000000 --- a/docs/html/event-loop_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -8964d69c6e53dfcd87350402aeadcaae \ No newline at end of file diff --git a/docs/html/event-loop_8h__incl.png b/docs/html/event-loop_8h__incl.png deleted file mode 100644 index 39b42062e642e24c75e1da57f0f1dd9fb248755f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46132 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

hz;0C#E8jf+}+K+k{YuBY7g856DtE^_PlNb~u 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 - - - - - - -µEvLoop: include/uevloop/system/event-loop.h Source File - - - - - - - - - -

-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
event-loop.h
-
-
-Go to the documentation of this file.
1 
-
5 #ifndef UEL_EVENT_LOOP_H
-
6 #define UEL_EVENT_LOOP_H
-
7 
- - - - -
12 
-
20 typedef struct uel_evloop uel_evloop_t;
-
21 struct uel_evloop{
-
22  uel_syspools_t *pools;
-
23  uel_sysqueues_t *queues;
-
24  uel_llist_t observers;
-
25 };
-
26 
-
33 void uel_evloop_init(
-
34  uel_evloop_t *event_loop,
-
35  uel_syspools_t *pools,
-
36  uel_sysqueues_t *queues
-
37 );
-
38 
-
49 void uel_evloop_run(uel_evloop_t *event_loop);
-
50 
- -
58  uel_evloop_t *event_loop,
-
59  uel_closure_t *closure,
-
60  void *value
-
61 );
-
62 
-
71 uel_event_t *uel_evloop_observe(
-
72  uel_evloop_t *event_loop,
-
73  volatile uintptr_t *condition_var,
-
74  uel_closure_t *closure
-
75 );
-
76 
-
86 uel_event_t *uel_evloop_observe_once(
-
87  uel_evloop_t *event_loop,
-
88  volatile uintptr_t *condition_var,
-
89  uel_closure_t *closure
-
90 );
-
91 
-
92 #endif /* end of include guard: UEL_EVENT_LOOP_H */
-
-
Defines a simple implementation of linked lists and functions to manipulate it.
-
void uel_evloop_run(uel_evloop_t *event_loop)
Triggers a runloop.
-
void uel_evloop_init(uel_evloop_t *event_loop, uel_syspools_t *pools, uel_sysqueues_t *queues)
Initialises an event loop.
-
uel_syspools_t * pools
Reference to the system's pools.
Definition: event-loop.h:22
-
Defines closures, objects that bind functions to creating and calling contexts.
-
uel_sysqueues_t * queues
Reference to the system's queues.
Definition: event-loop.h:23
-
uel_event_t * uel_evloop_observe(uel_evloop_t *event_loop, volatile uintptr_t *condition_var, uel_closure_t *closure)
Observes a value and reacts to changes in it.
-
uel_llist_t observers
Stores references to values to be observed.
Definition: event-loop.h:24
-
void uel_evloop_enqueue_closure(uel_evloop_t *event_loop, uel_closure_t *closure, void *value)
Enqueues a closure to be invoked.
-
The event loop object.
Definition: event-loop.h:21
-
uel_event_t * uel_evloop_observe_once(uel_evloop_t *event_loop, volatile uintptr_t *condition_var, uel_closure_t *closure)
Observes a value and reacts once to changes in it. Afterwards, the observer will be destroyed.
-
A container for the system's internal queues.
-
A container for the system's internal pools.
- - - - diff --git a/docs/html/event_8h.html b/docs/html/event_8h.html deleted file mode 100644 index 7cdf67f..0000000 --- a/docs/html/event_8h.html +++ /dev/null @@ -1,575 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/event.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
event.h File Reference
-
-
- -

Defines events and methods to configure events. -More...

-
-Include dependency graph for event.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - -

-Data Structures

struct  uel_event_t
 Events are special messages passed around the core. They represent tasks to be run at some point by the system. More...
 
union  uel_event_t::uel_event_detail
 
struct  uel_event_t::uel_event_detail::uel_event_timer
 Contains information suitable for scheduling an event at the scheduler. More...
 
struct  uel_event_t::uel_event_detail::uel_event_signal
 Contains information related to an emitted signal. More...
 
struct  uel_event_t::uel_event_detail::uel_event_listener
 Contains the context of a particular signal listener. More...
 
struct  uel_event_t::uel_event_detail::uel_event_observer
 Contains the reference to an observer variable. More...
 
- - - - - - - -

-Typedefs

-typedef enum uel_event_type uel_event_type_t
 Alias to the uel_event_type enum.
 
-typedef enum uel_event_timer_status uel_event_timer_status_t
 Alias to the uel_event_timer_status.
 
- - - - - - - -

-Enumerations

enum  uel_event_type {
-  UEL_CLOSURE_EVENT, -UEL_TIMER_EVENT, -UEL_SIGNAL_EVENT, -UEL_SIGNAL_LISTENER_EVENT, -
-  UEL_OBSERVER_EVENT -
- }
 Possible types of events understood by the core.
 
enum  uel_event_timer_status { UEL_TIMER_RUNNING, -UEL_TIMER_PAUSED, -UEL_TIMER_CANCELLED - }
 Possible statuses for a timer event.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void uel_event_config_closure (uel_event_t *event, uel_closure_t *closure, void *value, bool repeating)
 Configures a closure event. More...
 
void uel_event_config_signal (uel_event_t *event, uintptr_t signal, uel_llist_t *listeners, void *params)
 Configures a signal event. More...
 
void uel_event_config_signal_listener (uel_event_t *event, uel_closure_t *closure, bool repeating)
 Configures a signal listener event. More...
 
void uel_event_config_observer (uel_event_t *event, uel_closure_t *closure, volatile uintptr_t *condition_var, bool repeating)
 Configures an observer event. More...
 
void uel_event_observer_cancel (uel_event_t *event)
 Cancels an observer. More...
 
void uel_event_config_timer (uel_event_t *event, uint16_t timeout_in_ms, bool repeating, bool immediate, uel_closure_t *closure, void *value, uint32_t current_time)
 Configures a timer event. More...
 
void uel_event_timer_pause (uel_event_t *event)
 Pauses a timer event. More...
 
void uel_event_timer_resume (uel_event_t *event)
 Resumes a paused timer event. More...
 
void uel_event_timer_cancel (uel_event_t *event)
 Cancels a timer event. More...
 
-

Detailed Description

-

Defines events and methods to configure events.

-

Function Documentation

- -

◆ uel_event_config_closure()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_event_config_closure (uel_event_t * event,
uel_closure_t * closure,
void * value,
bool repeating 
)
-
- -

Configures a closure event.

-
Parameters
- - - - - -
eventThe event to be configured
closureThe closure to be invoked when the event is run
valueThe value to supply to the closure as parameters when it is invoked
repeatingIntructs the system whether should this event be disposed of after processing
-
-
- -
-
- -

◆ uel_event_config_observer()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_event_config_observer (uel_event_t * event,
uel_closure_t * closure,
volatile uintptr_t * condition_var,
bool repeating 
)
-
- -

Configures an observer event.

-
Parameters
- - - - - -
eventThe event to be configured
closureThe closure to be invoked when the observed value changes
condition_varThe address of a volatile variable to be observed
repeatingIntructs the system whether should this event be disposed of after processing
-
-
- -
-
- -

◆ uel_event_config_signal()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_event_config_signal (uel_event_t * event,
uintptr_t signal,
uel_llist_t * listeners,
void * params 
)
-
- -

Configures a signal event.

-
Parameters
- - - - - -
eventThe event to be configured
signalThe integer value that identifies this signal
listenersThe listeners associated to this signal
paramsThe parameters associated with this signal emission
-
-
- -
-
- -

◆ uel_event_config_signal_listener()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_event_config_signal_listener (uel_event_t * event,
uel_closure_t * closure,
bool repeating 
)
-
- -

Configures a signal listener event.

-
Parameters
- - - - -
eventThe event to be configured
closureThe closure to be invoked when the event is run
repeatingIntructs the system whether should this event be disposed of after processing
-
-
- -
-
- -

◆ uel_event_config_timer()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_event_config_timer (uel_event_t * event,
uint16_t timeout_in_ms,
bool repeating,
bool immediate,
uel_closure_t * closure,
void * value,
uint32_t current_time 
)
-
- -

Configures a timer event.

-
Parameters
- - - - - - - - -
eventThe event to be configured
timeout_in_msThe delay to process this event. If the event is repeating, this defines the interval between successive executions.
repeatingIf this flag is set, the event will not be destroyed after execution. Instead it will be put on the schedule queue.
immediateIf this flag is set, a recurring timer will be immediately enqueued for processing. One-shot timers will ignore this setting.
closureThe closure to be invoked when the timer expires
valueThe value to supply to the closure as parameters when it is invoked
current_timeThe current value set in the system counter.
-
-
- -
-
- -

◆ uel_event_observer_cancel()

- -
-
- - - - - - - - -
void uel_event_observer_cancel (uel_event_t * event)
-
- -

Cancels an observer.

-
Parameters
- - -
eventThe observer event to be cancelled
-
-
- -
-
- -

◆ uel_event_timer_cancel()

- -
-
- - - - - - - - -
void uel_event_timer_cancel (uel_event_t * event)
-
- -

Cancels a timer event.

-
Parameters
- - -
eventThe timer event to be cancelled
-
-
- -
-
- -

◆ uel_event_timer_pause()

- -
-
- - - - - - - - -
void uel_event_timer_pause (uel_event_t * event)
-
- -

Pauses a timer event.

-
Parameters
- - -
eventThe timer event to be paused
-
-
- -
-
- -

◆ uel_event_timer_resume()

- -
-
- - - - - - - - -
void uel_event_timer_resume (uel_event_t * event)
-
- -

Resumes a paused timer event.

-
Parameters
- - -
eventThe timer event to be resumed
-
-
- -
-
-
- - - - diff --git a/docs/html/event_8h__dep__incl.map b/docs/html/event_8h__dep__incl.map deleted file mode 100644 index 7284dc7..0000000 --- a/docs/html/event_8h__dep__incl.map +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/docs/html/event_8h__dep__incl.md5 b/docs/html/event_8h__dep__incl.md5 deleted file mode 100644 index 6b5fedd..0000000 --- a/docs/html/event_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -b8641219d04107e5ab8fc723dcaeb00e \ No newline at end of file diff --git a/docs/html/event_8h__dep__incl.png b/docs/html/event_8h__dep__incl.png deleted file mode 100644 index bb6f0d68408fd2624bce5d9af35345d6fefefa56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32070 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 diff --git a/docs/html/event_8h__incl.map b/docs/html/event_8h__incl.map deleted file mode 100644 index d55dfe9..0000000 --- a/docs/html/event_8h__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/event_8h__incl.md5 b/docs/html/event_8h__incl.md5 deleted file mode 100644 index d0697b5..0000000 --- a/docs/html/event_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d914d40d9b5258a79fdc20f8cea60760 \ No newline at end of file diff --git a/docs/html/event_8h__incl.png b/docs/html/event_8h__incl.png deleted file mode 100644 index f8715730c3f89657e848b0409090ab72cea27257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9630 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 diff --git a/docs/html/event_8h_source.html b/docs/html/event_8h_source.html deleted file mode 100644 index b3302c0..0000000 --- a/docs/html/event_8h_source.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/event.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
event.h
-
-
-Go to the documentation of this file.
1 
-
5 #ifndef UEL_EVENT_H
-
6 #define UEL_EVENT_H
-
7 
-
9 #include <stdint.h>
-
10 #include <stdbool.h>
-
12 
-
13 #include "uevloop/utils/closure.h"
- -
15 
- -
18  UEL_CLOSURE_EVENT,
-
19  UEL_TIMER_EVENT,
-
20  UEL_SIGNAL_EVENT,
-
21  UEL_SIGNAL_LISTENER_EVENT,
-
22  UEL_OBSERVER_EVENT
-
23 };
- -
26 
-
27 
- -
30  UEL_TIMER_RUNNING,
-
31  UEL_TIMER_PAUSED,
-
32  UEL_TIMER_CANCELLED
-
33 };
- -
36 
-
37 
-
57 typedef struct event uel_event_t;
-
58 struct event {
- -
60  uel_closure_t closure;
-
61  void *value;
-
62  bool repeating;
-
63 
- -
67 
-
69  struct uel_event_timer {
-
73  uint32_t due_time;
-
74  uint16_t timeout;
- -
76  } timer;
-
77 
- -
80  uintptr_t value;
-
81  uel_llist_t *listeners;
-
82  } signal;
-
83 
- -
89  bool unlistened;
-
90  } listener;
-
91 
- -
94  volatile uintptr_t *condition_var;
-
95  uintptr_t last_value;
-
96  bool cancelled;
-
98  } observer;
-
99  } detail;
-
100 };
-
101 
- -
111  uel_event_t *event,
-
112  uel_closure_t *closure,
-
113  void *value,
-
114  bool repeating
-
115 );
-
116 
- -
125  uel_event_t *event,
-
126  uintptr_t signal,
-
127  uel_llist_t *listeners,
-
128  void *params
-
129 );
-
130 
-
138 void uel_event_config_signal_listener(uel_event_t *event, uel_closure_t *closure, bool repeating);
-
139 
- -
149  uel_event_t *event,
-
150  uel_closure_t *closure,
-
151  volatile uintptr_t *condition_var,
-
152  bool repeating
-
153 );
-
154 
-
159 void uel_event_observer_cancel(uel_event_t *event);
-
160 
- -
174  uel_event_t *event,
-
175  uint16_t timeout_in_ms,
-
176  bool repeating,
-
177  bool immediate,
-
178  uel_closure_t *closure,
-
179  void *value,
-
180  uint32_t current_time
-
181 );
-
182 
-
187 void uel_event_timer_pause(uel_event_t *event);
-
188 
-
193 void uel_event_timer_resume(uel_event_t *event);
-
194 
-
199 void uel_event_timer_cancel(uel_event_t *event);
-
200 
-
201 #endif /* UEL_EVENT_H */
-
-
Defines a simple implementation of linked lists and functions to manipulate it.
-
uel_llist_t * listeners
Reference to the signal listeners.
Definition: event.h:81
-
uintptr_t value
The integer value that identifies this signal.
Definition: event.h:80
-
void * value
The value the closure should be invoked with.
Definition: event.h:61
-
bool unlistened
Definition: event.h:89
-
uintptr_t last_value
Definition: event.h:95
-
Defines closures, objects that bind functions to creating and calling contexts.
-
void uel_event_timer_pause(uel_event_t *event)
Pauses a timer event.
-
Events are special messages passed around the core. They represent tasks to be run at some point by t...
Definition: event.h:58
-
uel_event_type_t type
The type of the event, as defined by uel_event_type_t
Definition: event.h:59
-
struct event::uel_event_detail::uel_event_signal signal
The emission information of this event. Relevant only for signals.
-
enum uel_event_timer_status uel_event_timer_status_t
Alias to the uel_event_timer_status.
Definition: event.h:35
-
void uel_event_timer_cancel(uel_event_t *event)
Cancels a timer event.
-
volatile uintptr_t * condition_var
The address of a volatile value to observe.
Definition: event.h:94
-
union event::uel_event_detail detail
Represents speciffic detail on a event depending on its type.
-
enum uel_event_type uel_event_type_t
Alias to the uel_event_type enum.
Definition: event.h:25
-
Contains the context of a particular signal listener.
Definition: event.h:85
-
void uel_event_observer_cancel(uel_event_t *event)
Cancels an observer.
-
void uel_event_config_signal(uel_event_t *event, uintptr_t signal, uel_llist_t *listeners, void *params)
Configures a signal event.
-
Definition: event.h:66
-
struct event::uel_event_detail::uel_event_listener listener
The listening information of this event. Relevant only for signal listeners.
-
void uel_event_config_timer(uel_event_t *event, uint16_t timeout_in_ms, bool repeating, bool immediate, uel_closure_t *closure, void *value, uint32_t current_time)
Configures a timer event.
-
void uel_event_config_observer(uel_event_t *event, uel_closure_t *closure, volatile uintptr_t *condition_var, bool repeating)
Configures an observer event.
-
uint32_t due_time
The value the system timer must be at when this event's closure should be invoked....
Definition: event.h:73
-
uel_event_timer_status_t status
Current timer status.
Definition: event.h:75
-
bool repeating
Marks whether the event should be discarded after processing.
Definition: event.h:62
-
Contains information related to an emitted signal.
Definition: event.h:79
-
Contains information suitable for scheduling an event at the scheduler.
Definition: event.h:69
-
bool cancelled
Whether this observer has been cancelled and is awaiting for destruction.
Definition: event.h:97
-
struct event::uel_event_detail::uel_event_timer timer
The scheduling information of this event. Relevant only for timers.
-
void uel_event_timer_resume(uel_event_t *event)
Resumes a paused timer event.
-
void uel_event_config_closure(uel_event_t *event, uel_closure_t *closure, void *value, bool repeating)
Configures a closure event.
-
uel_event_type
Possible types of events understood by the core.
Definition: event.h:17
-
Contains the reference to an observer variable.
Definition: event.h:93
-
uel_closure_t closure
The closure to be invoked a.k.a. the action to be run.
Definition: event.h:60
-
struct event::uel_event_detail::uel_event_observer observer
The observing information of this event. Relevant only for observers.
-
uel_event_timer_status
Possible statuses for a timer event.
Definition: event.h:29
-
void uel_event_config_signal_listener(uel_event_t *event, uel_closure_t *closure, bool repeating)
Configures a signal listener event.
-
uint16_t timeout
Holds the interval between two executions of the timer.
Definition: event.h:74
- - - - diff --git a/docs/html/files.html b/docs/html/files.html deleted file mode 100644 index c991205..0000000 --- a/docs/html/files.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - -µEvLoop: File List - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
File List
-
-
-
Here is a list of all documented files with brief descriptions:
-
[detail level 12345]
- - - - - - - - - - - - - - - - - - - - - - - - - - -
  include
  uevloop
  portability
 critical-section.hContains macros for delimitating critical sections
  system
  containers
 application.hThe application module is a convenient top-level container for the system internals
 system-pools.hA container for the system's internal pools
 system-queues.hA container for the system's internal queues
 event-loop.hModule responsible for running enqueued events and process them accordingly
 event.hDefines events and methods to configure events
 scheduler.hModule responsible for keeping track of time and tasks to be run in the future
 signal.hDefines signals and relays, structures used to communicate asynchronously between distant parts of the application
  utils
 automatic-pool.hDefines automatic pointers and automatic pools, objects that wrap object pools and objects managed by them. These wrappers provide basic automatic memory management
 circular-queue.hDefines circular queues, fast and efficient FIFO data structures
 closure.hDefines closures, objects that bind functions to creating and calling contexts
 conditional.hContains definitions of functional conditionals, structures that act as if-else constructs
 functional.hContains helpers for composing and augumenting closures
 iterator.hDefines iterators, structures and functions suitable for enumerating other data structures
 linked-list.hDefines a simple implementation of linked lists and functions to manipulate it
 module.h
 object-pool.hDefines object pools, arrays of pre-allocated objects for dynamic use
 pipeline.hDefines pipelines, structures to hold many closures and functions to invoke them sequentially, composing their functionality
 promise.hContains definitions for promise stores, promises and functions to manipulate them
 config.hCentral repository of system configuration. This is meant to be edited by the programmer as needed
-
-
- - - - diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA diff --git a/docs/html/functional_8h.html b/docs/html/functional_8h.html deleted file mode 100644 index 0ac45f0..0000000 --- a/docs/html/functional_8h.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/functional.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
functional.h File Reference
-
-
- -

Contains helpers for composing and augumenting closures. -More...

-
-Include dependency graph for functional.h:
-
-
- - - - - - - - -
-
-

Go to the source code of this file.

- - - - - -

-Data Structures

struct  uel_func_mapper_t
 Maps elements of an iterator to an area of memory. Each element is assigned to a void pointer slot. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void uel_func_mapper_init (uel_func_mapper_t *mapper, uel_iterator_t *iterator, void **destination, size_t limit)
 Initialises a mapper object. More...
 
uel_closure_t uel_func_pipeline (uel_pipeline_t *pipeline)
 Wraps a pipeline in a closure. More...
 
uel_closure_t uel_func_conditional (uel_conditional_t *conditional)
 Wraps a conditional in a closure. More...
 
uel_closure_t uel_func_foreach (uel_closure_t *closure)
 Wraps a closure in a foreach construct. More...
 
uel_closure_t uel_func_map (uel_closure_t *closure)
 Wraps a closure in a map construct. More...
 
uel_closure_t uel_func_find (uel_closure_t *closure)
 Wraps a closure in a find construct. More...
 
uel_closure_t uel_func_count (uel_closure_t *closure)
 Wraps a closure in a count construct. More...
 
uel_closure_t uel_func_all (uel_closure_t *closure)
 Wraps a closure in a all construct. More...
 
uel_closure_t uel_func_none (uel_closure_t *closure)
 Wraps a closure in a none construct. More...
 
uel_closure_t uel_func_any (uel_closure_t *closure)
 Wraps a closure in a all construct. More...
 
-

Detailed Description

-

Contains helpers for composing and augumenting closures.

-

Function Documentation

- -

◆ uel_func_all()

- -
-
- - - - - - - - -
uel_closure_t uel_func_all (uel_closure_t * closure)
-
- -

Wraps a closure in a all construct.

-

Creates a new closure based on a supplied closure. This new closure accepts an uel_iterator_t as parameter and applies the supplied closure to each element yielded by this iterator.

-

If all enumerate elements cause the supplied closure to return true, this new closure also returns true. Otherwise, it returns false.

-
Parameters
- - -
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether all elements pass the supplied test closure.
- -
-
- -

◆ uel_func_any()

- -
-
- - - - - - - - -
uel_closure_t uel_func_any (uel_closure_t * closure)
-
- -

Wraps a closure in a all construct.

-

Creates a new closure based on a supplied closure. This new closure accepts an uel_iterator_t as parameter and applies the supplied closure to each element yielded by this iterator.

-

If any enumerate elements cause the supplied closure to return true, this new closure also returns true. Otherwise, it returns false.

-
Parameters
- - -
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether any elements pass the supplied test closure.
- -
-
- -

◆ uel_func_conditional()

- -
-
- - - - - - - - -
uel_closure_t uel_func_conditional (uel_conditional_t * conditional)
-
- -

Wraps a conditional in a closure.

-

This function wraps a conditional in a closure. When invoked, the closure's parameters will be forwarded to the conditional. Also, the conditional's returned value will be returned from the closure.

-
Parameters
- - -
conditionalThe conditional to be wrapped
-
-
-
Returns
A closure that, when invoked, will apply the supplied conditional
- -
-
- -

◆ uel_func_count()

- -
-
- - - - - - - - -
uel_closure_t uel_func_count (uel_closure_t * closure)
-
- -

Wraps a closure in a count construct.

-

Creates a new closure based on a supplied closure. This new closure accepts an uel_iterator_t as parameter and applies the supplied closure to each element yielded by this iterator.

-

This new closure counts the number of enumerated elements that caused the test closure to return true.

-
Parameters
- - -
closureThe test to be applied against each enumerated element
-
-
-
Returns
The number of elements that passed the supplied test closure.
- -
-
- -

◆ uel_func_find()

- -
-
- - - - - - - - -
uel_closure_t uel_func_find (uel_closure_t * closure)
-
- -

Wraps a closure in a find construct.

-

Creates a new closure based on a supplied closure. This new closure accepts an uel_iterator_t as parameter and applies the supplied closure to each element yielded by this iterator.

-

When some enumerated element causes the supplied closure to return true, its address is returned by the new closure.

-
Parameters
- - -
closureThe test to be applied against each enumerated element
-
-
-
Returns
The address of the first element that passes the supplied test. If no such element is found, returns NULL.
- -
-
- -

◆ uel_func_foreach()

- -
-
- - - - - - - - -
uel_closure_t uel_func_foreach (uel_closure_t * closure)
-
- -

Wraps a closure in a foreach construct.

-

Creates a new closure based on a supplied closure. When invoked, this new closure takes an uel_iterator_t for parameter and yields each element in it to the supplied closure.

-

See uel_iterator_foreach().

-
Parameters
- - -
closureA reference to the closure to be wrapped
-
-
- -
-
- -

◆ uel_func_map()

- -
-
- - - - - - - - -
uel_closure_t uel_func_map (uel_closure_t * closure)
-
- -

Wraps a closure in a map construct.

-

Creates a new closure based on a supplied closure. This new closure takes an uel_func_mapper_t for parameter describing the mapping relation between elements yielded from an iterator and a region of memory.

-

When invoked, this new closure passes each element enumerated by this mapper as parameter to the supplied closure and stores its returned value sequentially in the destination area. It then returns the destination address.

-

See uel_iterator_map().

-
Parameters
- - -
closureA reference to the closure to be wrapped
-
-
- -
-
- -

◆ uel_func_mapper_init()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void uel_func_mapper_init (uel_func_mapper_t * mapper,
uel_iterator_t * iterator,
void ** destination,
size_t limit 
)
-
- -

Initialises a mapper object.

-
Parameters
- - - - - -
mapperThe mapper instance to be initialised
iteratorThe iterator responsible for enumerating elements
destinationAn array of void pointers to where elements will be mapped
limitThe maximum size of elements that can be mapped
-
-
- -
-
- -

◆ uel_func_none()

- -
-
- - - - - - - - -
uel_closure_t uel_func_none (uel_closure_t * closure)
-
- -

Wraps a closure in a none construct.

-

Creates a new closure based on a supplied closure. This new closure accepts an uel_iterator_t as parameter and applies the supplied closure to each element yielded by this iterator.

-

If all enumerate elements cause the supplied closure to return false, this new closure also returns true. Otherwise, it returns false.

-
Parameters
- - -
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether all elements are reproved in the supplied test closure.
- -
-
- -

◆ uel_func_pipeline()

- -
-
- - - - - - - - -
uel_closure_t uel_func_pipeline (uel_pipeline_t * pipeline)
-
- -

Wraps a pipeline in a closure.

-

This function wraps a pipeline in a closure. When invoked, the closure's parameters will be forwarded to the pipeline. Also, the pipeline's returned value will be returned from the closure.

-
Parameters
- - -
pipelineThe pipeline to be wrapped
-
-
-
Returns
A closure that, when invoked, will apply the supplied pipeline
- -
-
-
- - - - diff --git a/docs/html/functional_8h__incl.map b/docs/html/functional_8h__incl.map deleted file mode 100644 index d43aecb..0000000 --- a/docs/html/functional_8h__incl.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/functional_8h__incl.md5 b/docs/html/functional_8h__incl.md5 deleted file mode 100644 index af8dbff..0000000 --- a/docs/html/functional_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -95171197af7a96b706c6fb74b3843148 \ No newline at end of file diff --git a/docs/html/functional_8h__incl.png b/docs/html/functional_8h__incl.png deleted file mode 100644 index b85eaa867d1fefaaf189008893aa56c21080f990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27379 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 diff --git a/docs/html/functional_8h_source.html b/docs/html/functional_8h_source.html deleted file mode 100644 index 3fa691a..0000000 --- a/docs/html/functional_8h_source.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/functional.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
functional.h
-
-
-Go to the documentation of this file.
1 
-
6 #ifndef UEL_FUNCTIONAL_H
-
7 #define UEL_FUNCTIONAL_H
-
8 
-
10 #include <stdlib.h>
-
12 
-
13 #include "uevloop/utils/closure.h"
-
14 #include "uevloop/utils/pipeline.h"
- -
16 #include "uevloop/utils/iterator.h"
-
17 
-
21 typedef struct uel_func_mapper uel_func_mapper_t;
- -
24  uel_iterator_t *iterator;
-
26  void **destination;
-
28  size_t limit;
-
29 };
-
30 
-
38 void uel_func_mapper_init(uel_func_mapper_t *mapper, uel_iterator_t *iterator,
-
39  void **destination, size_t limit);
-
40 
-
50 uel_closure_t uel_func_pipeline(uel_pipeline_t *pipeline);
-
51 
-
61 uel_closure_t uel_func_conditional(uel_conditional_t *conditional);
-
62 
-
73 uel_closure_t uel_func_foreach(uel_closure_t *closure);
-
74 
-
89 uel_closure_t uel_func_map(uel_closure_t *closure);
-
90 
-
104 uel_closure_t uel_func_find(uel_closure_t *closure);
-
105 
-
118 uel_closure_t uel_func_count(uel_closure_t *closure);
-
119 
-
132 uel_closure_t uel_func_all(uel_closure_t *closure);
-
133 
-
146 uel_closure_t uel_func_none(uel_closure_t *closure);
-
147 
-
160 uel_closure_t uel_func_any(uel_closure_t *closure);
-
161 
-
162 #endif /* end of include guard: UEL_FUNCTIONAL_H */
-
-
uel_closure_t uel_func_find(uel_closure_t *closure)
Wraps a closure in a find construct.
-
Defines pipelines, structures to hold many closures and functions to invoke them sequentially,...
-
Maps elements of an iterator to an area of memory. Each element is assigned to a void pointer slot.
Definition: functional.h:22
-
uel_closure_t uel_func_none(uel_closure_t *closure)
Wraps a closure in a none construct.
-
Defines closures, objects that bind functions to creating and calling contexts.
-
uel_closure_t uel_func_count(uel_closure_t *closure)
Wraps a closure in a count construct.
-
uel_closure_t uel_func_foreach(uel_closure_t *closure)
Wraps a closure in a foreach construct.
-
uel_closure_t uel_func_pipeline(uel_pipeline_t *pipeline)
Wraps a pipeline in a closure.
-
uel_iterator_t * iterator
The iterator that enumerates the elements to be mapped.
Definition: functional.h:24
-
Defines iterators, structures and functions suitable for enumerating other data structures.
-
uel_closure_t uel_func_any(uel_closure_t *closure)
Wraps a closure in a all construct.
-
uel_closure_t uel_func_conditional(uel_conditional_t *conditional)
Wraps a conditional in a closure.
-
uel_closure_t uel_func_map(uel_closure_t *closure)
Wraps a closure in a map construct.
-
uel_closure_t uel_func_all(uel_closure_t *closure)
Wraps a closure in a all construct.
-
void ** destination
The area of memory to where elements will be mapped.
Definition: functional.h:26
-
size_t limit
The maximum size of slots to be mapped to.
Definition: functional.h:28
-
void uel_func_mapper_init(uel_func_mapper_t *mapper, uel_iterator_t *iterator, void **destination, size_t limit)
Initialises a mapper object.
-
Contains definitions of functional conditionals, structures that act as if-else constructs.
- - - - diff --git a/docs/html/functions.html b/docs/html/functions.html deleted file mode 100644 index 9fdb9b0..0000000 --- a/docs/html/functions.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - - - - -µEvLoop: Data Fields - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
- -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

-
- - - - diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html deleted file mode 100644 index 7f52164..0000000 --- a/docs/html/functions_vars.html +++ /dev/null @@ -1,401 +0,0 @@ - - - - - - - -µEvLoop: Data Fields - Variables - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- a -

- - -

- b -

- - -

- c -

- - -

- d -

- - -

- e -

- - -

- f -

- - -

- h -

- - -

- i -

- - -

- l -

- - -

- m -

- - -

- n -

- - -

- o -

- - -

- p -

- - -

- q -

- - -

- r -

- - -

- s -

- - -

- t -

- - -

- u -

- - -

- v -

- - -

- w -

-
- - - - diff --git a/docs/html/globals.html b/docs/html/globals.html deleted file mode 100644 index 06f1483..0000000 --- a/docs/html/globals.html +++ /dev/null @@ -1,554 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
- -

- u -

-
- - - - diff --git a/docs/html/globals_defs.html b/docs/html/globals_defs.html deleted file mode 100644 index c024530..0000000 --- a/docs/html/globals_defs.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/html/globals_enum.html b/docs/html/globals_enum.html deleted file mode 100644 index 61ebe77..0000000 --- a/docs/html/globals_enum.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/html/globals_eval.html b/docs/html/globals_eval.html deleted file mode 100644 index 5ec3c9c..0000000 --- a/docs/html/globals_eval.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/html/globals_func.html b/docs/html/globals_func.html deleted file mode 100644 index a22dd0d..0000000 --- a/docs/html/globals_func.html +++ /dev/null @@ -1,437 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-  - -

- u -

-
- - - - diff --git a/docs/html/globals_type.html b/docs/html/globals_type.html deleted file mode 100644 index f8d049d..0000000 --- a/docs/html/globals_type.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - -µEvLoop: Globals - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
- - - - diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html deleted file mode 100644 index 970b17d..0000000 --- a/docs/html/graph_legend.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -µEvLoop: Graph Legend - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
Graph Legend
-
-
-

This page explains how to interpret the graphs that are generated by doxygen.

-

Consider the following example:

/*! Invisible class because of truncation */
-
class Invisible { };
-
-
/*! Truncated class, inheritance relation is hidden */
-
class Truncated : public Invisible { };
-
-
/* Class not documented with doxygen comments */
-
class Undocumented { };
-
-
/*! Class that is inherited using public inheritance */
-
class PublicBase : public Truncated { };
-
-
/*! A template class */
-
template<class T> class Templ { };
-
-
/*! Class that is inherited using protected inheritance */
-
class ProtectedBase { };
-
-
/*! Class that is inherited using private inheritance */
-
class PrivateBase { };
-
-
/*! Class that is used by the Inherited class */
-
class Used { };
-
-
/*! Super class that inherits a number of other classes */
-
class Inherited : public PublicBase,
-
protected ProtectedBase,
-
private PrivateBase,
-
public Undocumented,
-
public Templ<int>
-
{
-
private:
-
Used *m_usedClass;
-
};
-

This will result in the following graph:

-

The boxes in the above graph have the following meaning:

-
    -
  • -A filled gray box represents the struct or class for which the graph is generated.
  • -
  • -A box with a black border denotes a documented struct or class.
  • -
  • -A box with a gray border denotes an undocumented struct or class.
  • -
  • -A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • -
-

The arrows have the following meaning:

-
    -
  • -A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • -
  • -A dark green arrow is used for protected inheritance.
  • -
  • -A dark red arrow is used for private inheritance.
  • -
  • -A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • -
  • -A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • -
-
- - - - diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 deleted file mode 100644 index 8fcdccd..0000000 --- a/docs/html/graph_legend.md5 +++ /dev/null @@ -1 +0,0 @@ -f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/docs/html/graph_legend.png b/docs/html/graph_legend.png deleted file mode 100644 index 83dfada4875ec19170dc2766167cef96526ee173..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20608 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 Qz*10V-ySMbMm`bq7feT{Bme*a diff --git a/docs/html/index.html b/docs/html/index.html deleted file mode 100644 index 5c9ecc6..0000000 --- a/docs/html/index.html +++ /dev/null @@ -1,1302 +0,0 @@ - - - - - - - -µEvLoop: µEvLoop <img src="https://github.com/andsmedeiros/uevloop/workflows/C/C++%20CI/badge.svg?event=push" alt="C/C++ CI"/> - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - -
- -
-
- - -
- -
- -
-
-
µEvLoop C/C++ CI
-
-
-

A fast and lightweight event loop aimed at embedded platforms in C99.

- -

About

-

µEvLoop is a microframework build around a lightweight event loop. It provides the programmer the building blocks to put together async, interrupt-based systems.

-

µEvLoop is loosely inspired on the Javascript event loop and aims to provide a similar programming model. Many similar concepts, such as events and closures are included. It is aimed at environments with very restricted resources, but can be run on all kinds of platforms.

-

*DISCLAIMER*

-

µEvLoop is in its early days and the API may change at any moment for now. Although it's well tested, use it with caution. Anyway, feedback is most welcome.

-

Highlights

-
    -
  • As minimalist and loose-coupled as possible.
  • -
  • Does not allocate any dynamic memory on its own. All memory needed is statically allocated either explicitly by the user or implicitly by containers.
  • -
  • Small memory footprint and runtime latency.
  • -
  • Does not try to make assumptions about the underlying system.
  • -
  • Extremely portable and conforming to ISO C99.
  • -
  • Depends only on a very small subset of the standard libc, mostly for fixed size integers and booleans.
  • -
  • Allows for excellent execution predictability and ease of debugging.
  • -
  • Can be used baremetal or alongside RTOSes.
  • -
  • Well tested and well documented.
  • -
-

API documentation

-

The API documentation is automatically generated by Doxygen. Find it here.

-

Testing

-

Tests are written using a simple set of macros. To run them, execute make test.

-

Please note that the makefile shipped is meant to be run in modern Linux systems. Right now, it makes use of bash commands and utilities as well as expects libSegFault.so to be in a hardcoded path.

-

If this doesn't fit your needs, edit it as necessary.

-

Test coverage

-

To generate code coverage reports, run make coverage. This requires gcov, lcov and genhtml to be on your PATH. After running, the results can be found on uevloop/coverage/index.html.

-

Core data structures

-

These data structures are used across the whole framework. They can also be used by the programmer in userspace as required.

-

All core data structures are unsafe. Be sure to wrap access to them in critical sections if you mean to share them amongst contexts asynchronous to each other.

-

Closures

-

A closure is an object that binds a function to some context. When invoked with arbitrary parameters, the bound function is called with both context and parameters available. With closures, some very powerful programming patterns, as functional composition, become way easier to implement.

-

Closures are very light and it is often useful to pass them around by value.

-

Basic closure usage

-
#include <stdint.h>
- -
-
static void *add(void *context, void *params){
-
uintptr_t value1 = (uintptr_t)context;
-
uintptr_t value2 = (uintptr_t)params;
-
-
return (void *)(value1 + value2);
-
}
-
-
// ...
-
-
// Binds the function `add` to the context (5)
-
uel_closure_t add_five = uel_closure_create(&add, (void *)5);
-
-
// Invokes the closure with the parameters set to (2)
-
uintptr_t result = (uintptr_t)uel_closure_invoke(&add_five, (void *)2);
-
// Result is 7
-

A word on (void *)

-

Closures take the context and parameters as a void pointers and return the same. This is meant to make possible to pass and return complex objects from them.

-

At many times, however, the programmer may find the values passed/returned are small and simple (i.e.: smaller than a pointer). If so, it is absolutely valid to cast from/to a uintptr_t or other data type known to be at most the size of a pointer. The above example does that to avoid creating unnecessary object pools or allocating dynamic memory.

-

Circular queues

-

Circular queues are fast FIFO (first-in-first-out) structures that rely on a pair of indices to maintain state. As the indices are moved forward on push/pop operations, the data itself is not moved at all.

-

The size of µEvLoop's circular queues are required to be powers of two, so it is possible to use fast modulo-2 arithmetic. As such, on queue creation, the size must be provided in its log2 form.

-

FORGETTING TO SUPPLY THE QUEUE'S SIZE IN LOG2 FORM MAY CAUSE THE STATIC ALLOCATION OF GIANT MEMORY POOLS

-

Basic circular queue usage

-
#include <stdint.h>
- -
-
#define BUFFER_SIZE_LOG2N (5)
-
#define BUFFER_SIZE (1<<BUFFER_SIZE_LOG2N) // 1<<5 == 2**5 == 32
-
-
// ...
-
uel_cqueue_t queue;
-
void *buffer[BUFFER_SIZE];
-
// Creates a queue with 32 (2**5) slots
-
uel_cqueue_init(&queue, buffer, BUFFER_SIZE_LOG2N);
-
-
// Push items in the queue
-
uel_cqueue_push(&queue, (void *)3)
-
uel_cqueue_push(&queue, (void *)2)
-
uel_cqueue_push(&queue, (void *)1);
-
-
// Pop items from the queue
-
uintptr_t value1 = (uintptr_t) uel_cqueue_pop(&queue); // value1 is 3
-
uintptr_t value2 = (uintptr_t) uel_cqueue_pop(&queue); // value2 is 2
-
uintptr_t value3 = (uintptr_t) uel_cqueue_pop(&queue); // value3 is 1
-

Circular queues store void pointers. As it is the case with closures, this make possible to store complex objects within the queue, but often typecasting to an smaller value type is more useful.

-

Object pools

-

On embedded systems, hardware resources such as processing power or RAM memory are often very limited. As a consequence, dynamic memory management can become very expensive in both aspects.

-

Object pools are statically allocated arrays of objects whose addresses are stored in a queue. Whenever the programmer needs a object in runtime, instead of dynamically allocating memory, it is possible to simply pop an object pointer from the pool and use it away.

-

Because object pools are statically allocated and backed by circular queues, they are very manageable and fast to operate.

-

Basic object pool usage

-
#include <stdint.h>
- -
-
typedef struct obj obj_t;
-
struct obj {
-
uint32_t num;
-
char str[32];
-
// Whatever
-
};
-
-
// ...
-
-
// The log2 of our pool size.
-
#define POOL_SIZE_LOG2N (5)
-
UEL_DECLARE_OBJPOOL_BUFFERS(obj_t, POOL_SIZE_LOG2N, my_pool);
-
-
uel_objpool_t my_pool;
-
uel_objpool_init(&my_pool, POOL_SIZE_LOG2N, sizeof(obj_t), UEL_OBJPOOL_BUFFERS(my_pool));
-
// my_pool now is a pool with 32 (2**5) obj_t
-
-
// ...
-
-
// Whenever the programmer needs a fresh obj_t
-
obj_t *obj = (obj_t *)uel_objpool_acquire(&my_pool);
-
-
// When it is no longer needed, return it to the pool
-
uel_objpool_release(&my_pool, obj);
-

Linked lists

-

µEvLoop ships a simple linked list implementation that holds void pointers, as usual.

-

Basic linked list usage

-
#include <stddef.h>
-
#include <stdint.h>
- -
-
// ...
-
-
uel_llist_t list;
- -
-
uel_llist_node_t nodes[2] = {
-
{(void *)1, NULL},
-
{(void *)2, NULL}
-
};
-
-
// Push items into the list
-
uel_llist_push_head(&list, &nodes[0]);
-
uel_llist_push_head(&list, &nodes[1]);
-
-
// List now is TAIL-> [1]-> [2]-> NULL. HEAD-> [2]
-
uel_llist_node_t *node1 = (uel_llist_node_t *)llist_pop_tail(&list);
-
uel_llist_node_t *node2 = (uel_llist_node_t *)llist_pop_tail(&list);
-
-
//node1 == nodes[0] and node2 == nodes[1]
-

Containers

-

Containers are objects that encapsulate declaration, initialisation and manipulation of core data structures used by the framework.

-

They also encapsulates manipulation of these data structures inside critical sections, ensuring safe access to shared resources across the system.

-

System pools

-

The syspools component is a container for the system internal object pools. It contains pools for events and linked list nodes used by the core components.

-

The system pools component is meant to be internally operated only. The only responsibility of the programmer is to allocate, initialise and provide it to other core components.

-

To configure the size of each pool created, edit include/uevloop/config.h.

-

System pools usage

-
-
-
// ...
-
-
uel_syspools_t pools;
- -
// This allocates two pools:
-
// 1) pools.event_pool
-
// 2) pools.llist_node_pool
-

System queues

-

The sysqueues component contains the necessary queues for sharing data amongst the core components. It holds queues for events in differing statuses.

-

As is the case with system pools, the sysqueues component should not be directly operated by the programmer, except for declaration and initialisation.

-

Configure the size of each queue created in include/uevloop/config.h.

-

System queues usage

-
-
-
// ...
-
-
uel_sysqueues_t queues;
- -
// This allocates two queues:
-
// 1) queues.event_queue (events ready to be processed are put here)
-
// 2) queues.schedule_queue (events ready to be scheduled are put here)
-

Application

-

The application component is a convenient top-level container for all the internals of an µEvLoop'd app. It is not necessary at all but contains much of the boilerplate in a typical application.

-

It also proxies functions to the event loop and scheduler components, serving as a single point entry for the system operation.

-

The following code is a realistic minimal setup of the framework. ```c #include <uevloop/system/containers/application.h> #include <stdint.h>

-

static volatile uint32_t counter = 0; static uel_application_t my_app;

-

// 1 kHz timer void my_timer_isr(){ my_timer_isr_flag = 0; uel_app_update_timer(&my_app, ++counter); }

-

int main (int argc, char *argv[]){ uel_app_init(&my_app);

-

// From here, the programmer can: // - Schedule timers with uel_app_run_later or uel_app_run_at_intervals // - Enqueue closures with uel_app_enqueue_closure // - Set up observers with uel_app_observe // - Listen for signals set at other places

-

while(1){
- uel_app_tick(&my_app); }

-

return 0; }

#### Application registry
-
-
The `application` component can also keep a registry of modules to manage. See [Appendix A: Modules](#appendix-a-modules) for more information.
-
-
## Core components
-
-
### Scheduler
-
-
The scheduler is a component that keeps track of current execution time and closures to be run in the future. It provides similar functionality to the `setTimeout` and `setInterval` Javascript functions.
-
-
Two queues lead in and out of it: the inbound schedule_queue is externally fed events that should be scheduled and then accounted for; the outbound event_queue hold events that are due to be collected and processed.
-
-
This component needs access to system's pools and queues.
-
-
#### Basic scheduler initialisation
-
-
```c
-
#include <uevloop/system/containers/system-pools.h>
-
#include <uevloop/system/containers/system-queues.h>
-
#include <uevloop/system/scheduler.h>
-
-
// ...
-
-
// Create the system containers
-
uel_syspools_t pools;
-
uel_syspools_init(&pools);
-
uel_sysqueues_t queues;
-
uel_sysqueues_init(&queues);
-
-
// Create the scheduler
-
uel_scheduer_t scheduler;
-
uel_sch_init(&scheduler, &pools, &queues);
-

Scheduler operation

-

The scheduler component accepts input of closures and scheduling info an then turns it into a timer event. This timer is then inserted in a timer list, which is sorted by each timer's due time.

-
#include <stdio.h>
-
#include <stdint.h>
- -
-
static void *print_coords(void *context, void *params){
-
uintptr_t x = (uintptr_t)context;
-
uintptr_t y = (uintptr_t)params;
-
printf("(x: %d, y: %d)\n", x, y);
-
-
return NULL;
-
}
-
-
// ...
-
-
uel_closure_t print_x_one = uel_closure_create(&print_coords, (void *)1);
-
uel_closure_t print_x_two = uel_closure_create(&print_coords, (void *)2);
-
uel_closure_t print_x_three = uel_closure_create(&print_coords, (void *)3);
-
-
// Schedules to run 1000ms in the future.
-
// Will print (x: 1, y: 4)
-
uel_sch_run_later(&scheduler, 1000, print_x_one, (void *)4);
-
-
// Schedules to run at intervals of 500ms, runs the first time after 500ms
-
// Will print (x: 2, y: 5)
-
uel_sch_run_at_intervals(&scheduler, 500, false, print_x_two, (void *)5);
-
-
// Schedules to run at intervals of 300ms, runs the first time the next runloop
-
// Will print (x: 3, y: 6)
-
uel_sch_run_at_intervals(&scheduler, 300, true, print_x_three, (void *)6);
-

The scheduler must be fed regularly to work. It needs both an update on the running time as an stimulus to process enqueued timers. Ideally, a hardware timer will be consistently incrementing a counter and feeding it at an ISR while in the main loop the scheduler is oriented to process its queue.

-
// millisecond counter
-
volatile uint32_t counter = 0;
-
-
// 1kHz timer ISR
-
void my_timer_isr(){
-
my_timer_isr_flag = 0;
-
uel_sch_update_timer(&scheduler, ++counter);
-
}
-
-
// ...
-
-
// On the main loop
- -

When the function uel_sch_manage_timers is called, two things happen:

    -
  1. The schedule_queue is flushed and every timer in it is scheduled accordingly;
  2. -
  3. The scheduler iterates over the scheduled timer list from the beginning and breaks it when it finds a timer scheduled further in the future. It then proceeds to move each timer from the extracted list to the event_queue, where they will be further collected and processed.
  4. -
-

Timer events

-

Events are messages passed amongst the system internals that coordinate what tasks are to be run, when and in which order. Usually, the programmer don't have to interact directly with events, being timer events and observers the only exceptions to this. The functions uel_sch_run_later and uel_sch_run_at_intervals return a uel_event_t *. With this handle, it is possible to pause and resume or even completely cancel a timer event.

-

```C #include <stddef.h>

-

uel_event_t *timer = uel_sch_run_at_intervals(&scheduler, 100, false, print_one, NULL);

-

// The event will be put on a hold queue in the scheduler uel_event_timer_pause(timer);
-

-

// The event will be rescheduled on the scheduler uel_event_timer_resume(timer);

-

// The event will be ignored by the scheduler and destroyed at the event loop uel_event_timer_cancel(timer);

When pausing and resuming timer events, be aware of the internal's latencies: paused timers are only sent to the hold queue when their scheduled time is hit. Also, when resumed, they are scheduled based solely on their period setting, being the elapsed time when they were paused completely ignored. Should a timer both scheduled *and* paused be resumed *before* its elapsed time is hit, it behaves as it was never paused.
-
Regarding cancelled timer events, they are equally susceptible to internal latency as they will only be destroyed when processed by the `event loop`. However, cancelled timers are not meant to be reused anyway. As a rule of thumb, **never** use a timer event after it was cancelled.
-
-
#### Scheduler time resolution
-
-
There are two distinct factors that will determine the actual time resolution of the scheduler:
-
1. the frequency of the feed in timer ISR
-
2. the frequency the function `uel_sch_manage_timers` is called.
-
-
The basic resolution variable is the feed-in timer frequency. Having this update too sporadically will cause events scheduled to differing moments to be indistinguishable regarding their schedule (*e.g.*: most of the time, having the timer increment every 100ms will make any events scheduled to moments with less than 100ms of difference to each other to be run in the same runloop).
-
-
A good value for the timer ISR frequency is usually between 1 kHz - 200 Hz, but depending on project requirements and available resources it can be less. Down to around 10 Hz is still valid, but precision will start to deteriorate quickly from here on.
-
-
There is little use having the feed-in timer ISR run at more than 1 kHz, as it is meant to measure milliseconds. Software timers are unlikely to be accurate enough for much greater frequencies anyway.
-
-
If the `uel_sch_manage_timers` function is not called frequently enough, events will start enqueuing and won't be served in time. Just make sure it is called when the counter is updated or when there are events on the schedule queue.
-
-
### Event loop
-
-
The central piece of µEvLoop (even its name is a bloody reference to it) is the event loop, a queue of events to be processed sequentially. It is not aware of the execution time and simply process all enqueued events when run. Most heavy work in the system happens here.
-
-
The event loop requires access to system's internal pools and queues.
-
-
#### Basic event loop initialisation
-
-
```c
-
#include <uevloop/system/containers/system-pools.h>
-
#include <uevloop/system/containers/system-queues.h>
-
#include <uevloop/system/event-loop.h>
-
-
// Create system containers
-
uel_syspools_t pools;
-
uel_syspools_init(&pools);
-
uel_sysqueues_t queues;
-
uel_sysqueues_init(&queues);
-
-
// Create the event loop
-
uel_evloop_t loop;
-
uel_evloop_init(&loop, &pools, &queues);
-

Event loop usage

-

The event loop is mean to behave as a run-to-completion task scheduler. Its uel_evloop_run function should be called as often as possible as to minimise execution latency. Each execution of uel_evloop_run is called a runloop .

-

The only way the programmer interacts with it, besides creation / initialisation, is by enqueuing hand-tailored closures directly, but other system components operate on the event loop behind the stage.

-

Any closure can be enqueued multiple times.

-
-
-
static void *add(void *context, void *params){
-
uintptr_t *num = (uintptr_t *)context;
-
uintptr_t other = (uintptr_t)params;
-
*num += other;
-
-
return NULL;
-
}
-
-
// ...
-
-
uintptr_t value = 0;
-
uel_closure_t closure = uel_closure_create(&add, (void *)&value);
-
-
uel_evloop_enqueue_closure(&loop, &closure, (void *)1);
-
// value is 0
-
- -
// value is 1
-
-
uel_evloop_enqueue_closure(&loop, &closure, (void *)2);
-
uel_evloop_enqueue_closure(&loop, &closure, (void *)3);
- -
// value is 6
-

WARNING! uel_evloop_run is the single most important function within µEvLoop. Almost every other core component depends on the event loop and if this function is not called, the loop won't work at all. Don't ever let it starve.

-

Observers

-

The event loop can be instructed to observe some arbitrary volatile value and react to changes in it.

-

Because observers are completely passive, they are ideal for triggering side-effects from ISRs without any latency. However, each observer set does incur extra latency during runloops, as the observed value must be continuously polled.

-

```c static volatile uintptr_t adc_reading = 0;

-

void my_adc_isr(){ adc_reading = my_adc_buffer; my_adc_isr_flag = 0; }

-

static void *process_adc_reading(void *context, void *params){ uintptr_t value = (uintptr_t)params; // Do something with value

-

return NULL; } uel_closure_t processor = uel_closure_create(process_adc_reading, NULL);

-

// This ensures each runloop the adc_reading variable is polled and, in case // of changes to it, the processor closure is called with its new value as // parameter. uel_event_t *observer = uel_evloop_observe(&loop, &adc_reading, &processor);

-

// When an observer isn't needed anymore, it can be disposed of to release any // used system resources. // DON'T use an observer after it has been cancelled. uel_event_observer_cancel(observer).

### Signal
-
-
Signals are similar to events in Javascript. It allows the programmer to message distant parts of the system to communicate with each other in a pub/sub fashion.
-
-
At the centre of the signal `system` is the Signal Relay, a structure that bind specific signals to its listeners. When a signal is emitted, the relay will **asynchronously** run each listener registered for that signal. If the listener was not recurring, it will be destroyed upon execution by the event loop.
-
-
#### Signals and relay initialisation
-
-
To use signals, the programmer must first define what signals will be available in a particular relay, then create the relay bound to this signals.
-
-
To be initialised, the relay must have access to the system's internal pools and queues. The programmer will also need to supply it a buffer of [linked lists](#linked-lists), where listeners will be stored.
-
-
```c
-
#include <uevloop/system/containers/system-pools.h>
-
#include <uevloop/system/containers/system-queues.h>
-
#include <uevloop/system/signal.h>
-
#include <uevloop/utils/linked-list.h>
-
-
// Create the system containers
-
uel_syspools_t pools;
-
uel_syspools_init(&pools);
-
uel_sysqueues_t queues;
-
uel_sysqueues_init(&queues);
-
-
// Define what signals will be available to this relay.
-
// Doing so in an enum makes it easy to add new signals in the future.
-
enum my_component_signals {
-
SIGNAL_1 = 0,
-
SIGNAL_2,
-
// New events would go here
-
SIGNAL_COUNT
-
};
-
-
// Declare the relay buffer. Note this array will be the number of signals large.
-
uel_llist_t buffer[SIGNAL_COUNT];
-
-
// Create the relay
-
uel_signal_relay_t relay;
-
uel_signal_relay_init(&relay, &pools, &queues, buffer, SIGNAL_COUNT);
-

Signal operation

-
// This is the listener function.
-
static void *respond_to_signal(void *context, void *params){
-
uintptr_t num = (uintptr_t)context;
-
// Signals can be emitted with parameters, just like events in JS
-
char c = (char)(uintptr_t)params;
-
printf("%d%c\n", num, c);
-
-
return NULL;
-
}
-
-
// Listeners can be persistent. They will fire once each time the signal is emitted
-
uel_closure_t respond_to_signal_1 = uel_closure_create(&respond_to_signal, (void *)1);
-
uel_signal_listener_t listener_1 = uel_signal_listen(SIGNAL_1, &relay, &respond_to_signal_1);
-
-
// Listeners can also be transient, so they fire ust on first emission
-
uel_closure_t respond_to_signal_2 = uel_closure_create(&respond_to_signal, (void *)2);
-
uel_signal_listener_t listener_2 = uel_signal_listen_once(SIGNAL_2, &relay, &respond_to_signal_2);
-
-
// ...
-
uel_signal_emit(SIGNAL_1, &relay, (void *)('a')); // prints 1a
-
uel_signal_emit(SIGNAL_2, &relay, (void *)('b')); // prints 2b
-
uel_signal_emit(SIGNAL_1, &relay, (void *)('c')); // prints 1c
-
uel_signal_emit(SIGNAL_2, &relay, (void *)('d')); // doesn't print anything
-

Please note the listener function will not be executed immediately, despite what this last snippet can lead to believe. Internally, each closure will be sent to the event loop and only when it runs will the closures be invoked.

-

You can also unlisten for events. This will prevent the listener returned by a uel_signal_listen() or uel_signal_listen_once() operation to have its closure invoked when the event loop performs the next runloop. Additionally, said listener will be removed from the signal vector on such opportunity.

-
uel_signal_unlisten(listener_1, &relay);
-
uel_signal_unlisten(listener_2, &relay); // This has no effect because the listener
-
// for SIGNAL_2 has already been marked as unlistened
-

Appendix A: Promises

-

Promises are data structures that bind an asynchronous operation to the possible execution paths that derive from its result. They are heavily inspired by Javascript promises.

-

Promises allow for very clean asynchronous code and exceptional error handling.

-

Promise stores

-

All promises must be created at a store, to where they will come back once destroyed. A promise store encapsulates object pools for promises and segments, the two composing pieces for promise operation.

-

Promise store creation

-

Promise store need access to two object pools, one for promises and one for segments.

#include <uevloop/utils/object-pools.h>
-
#include <uevloop/system/promise.h>
-
-
#define PROMISE_STORE_SIZE_LOG2N 4 // 16 promises
-
#define SEGMENT_STORE_SIZE_LOG2N 6 // 64 segments
-
-
uel_objpool_t promise_pool;
-
uel_objpool_t segment_pool;
-
UEL_DECLARE_OBJPOOL_BUFFERS(uel_promise_t, PROMISE_STORE_SIZE_LOG2N, promise);
-
UEL_DECLARE_OBJPOOL_BUFFERS(uel_promise_segment_t, SEGMENT_STORE_SIZE_LOG2N, segment);
- -
&promise_pool,
-
PROMISE_STORE_SIZE_LOG2N,
-
sizeof(uel_promise_t),
- -
);
- -
&segment_pool,
-
SEGMENT_STORE_SIZE_LOG2N,
-
sizeof(uel_promise_segment_t),
- -
);
-
-
uel_promise_store_t store = uel_promise_store_create(&promise_pool, &segment_pool);
-

Promises and segments

-

As mentioned above, promises and segments are the two building blocks for composing asynchronous chains of events. Promises represent the asynchronous operation per se and segments are the synchronous processing that occurs when a promise settles.

-

Settling a promise means transitioning it into either resolved or rejected states which respectively indicate success or error of the asynchronous operation, optionally assigning a meaningful value to the promise.

-

Promise creation

-

There are two necessary pieces for creating a promise: a store and a constructor closure that starts the asynchronous operation.

-
void *start_some_async(void *context, void *params){
-
uel_promise_t *promise = (uel_promise_t *)params;
-
// ...
-
return NULL; // return value is ignored
-
}
-
-
// ...
-
-
uel_promise_t *promise =
-
uel_promise_create(&store, uel_closure_create(start_some_async, NULL));
-

When the promise is created, start_some_async is invoked immediately, taking the promise pointer as parameter.

-

On creation, promises are in the pending state. This means its asynchronous operation has not been completed yet and the promise does not hold any meaningful value.

-

Promise settling

-

Once the operation is completed (and this can also be synchronously done from inside the constructor closure), there are two functions for signalling either success or failure of the asynchronous operation:

-
uel_promise_resolve(promise1, (void *)SOME_VALUE); // operation succeeded
-
uel_promise_reject(promise2, (void *)SOME_ERROR); // operation failed
-

Once a promise is settled, it holds a value that can be accessed via promise->value.

-

Segments

-

Segments represent the synchronous phase that follows a promise settling. They contain two closures, one for handling resolved promises and one for handling rejected promises. Either one is chosen at runtime, depending on the settled state of the promise, and is invoked with the promise as parameter.

-

Depending on the promise state, attaching segments have different effects. When a promise is pending, attached segments just get enqueued for execution once the promise is settled. Should the promise be already settled, attached segments get processed immediately instead.

-
#include <stdio.h>
-
#include <stddef.h>
-
-
void *report_success(void *context, void *params) {
-
char *tag = (char *)context;
-
uel_promise_t *promise = (uel_promise_t *)params;
-
printf("promise %s resolved with %d\n", tag, promise->value);
-
return NULL;
-
}
-
-
void *report_error(void *context, void *params) {
-
char *tag = (char *)context;
-
uel_promise_t *promise = (uel_promise_t *)params;
-
printf("promise %s rejected with %d\n", tag, promise->value);
-
return NULL;
-
}
-
-
// ...
-
-
// Assume p1, p2 and p3 as pending, resolved and rejected promises, respectively
-
// p2 is resolved with (uintptr_t)10 and p3 is rejected with (uintptr_t)100
-
- -
p1,
-
uel_closure_create(report_success, (void *)"p1"),
-
uel_closure_create(report_error, (void *)"p1")
-
);
-
// Neither closure gets invoked. Instead, a new segment containing them is enqueued.
-
- -
p2,
-
uel_closure_create(report_success, (void *)"p2"),
-
uel_closure_create(report_error, (void *)"p2")
-
);
-
// As the promise is already resolved, instead of enqueueing a segment, the first
-
// closure is invoked.
-
// "p2 resolved with 10" is printed
-
- -
p3,
-
uel_closure_create(report_success, (void *)"p3"),
-
uel_closure_create(report_error, (void *)"p3")
-
);
-
// Similarly, as the promise is already rejected, the second closure gets invoked
-
// immediately.
-
// "p3 rejected with 100" is printed
-
-
uel_promise_resolve(p1, (uintptr_t)1);
-
// Upon settling, segments are removed from the queue and processed.
-
// "p1 resolved with 1" is printed
-

The uel_promise_after() function takes two closures as parameters. This is useful for splitting the execution path in two mutually exclusive routes depending on the settled state of the promise.

-

There are three other functions for enqueuing segments. They can be used for attaching segments that only produce effects on specific settled states or attaching the same closure to both states:

-
uel_promise_then(my_promise, my_closure);
-
// `my_closure` is invoked only when `my_promise` is resolved.
-
// The added segment is ignored if the promise is rejected.
-
-
uel_promise_catch(my_promise, my_closure);
-
// `my_closure` is invoked only when `my_promise` is rejected.
-
// The added segment is ignored if the promise is resolved.
-
-
uel_promise_always(my_promise, my_closure);
-
// `my_closure` is invoked always upon settling, regardless of the settled state
-

Segment chains and promise resettling

-

Any number of segments can be attached to some promise. They will be either processed immediately, in case the promise is already settled, or enqueued for processing upon settling in the future. Regardless, attached segments are always processed in registration order.

-

Chaining segments is useful because segments have the ability to commute between execution paths through promise resettling. To resettle a promise means changing its state and value.

-
void *store_char(void *context, void *params) {
-
unsigned char *var = (unsigned char *)context;
-
uel_promise_t *promise = (uel_promise_t *)params;
-
if((uintptr_t)promise->value <= 255) {
-
*var = (unsigned char)(uintptr_t)promise->value;
-
} else {
-
uel_promise_resettle(promise, UEL_PROMISE_REJECTED, (void *)"Value too big");
-
}
-
return NULL;
-
}
-
-
void *report_error(void *context, void *params) {
-
uel_promise_t *promise = (uel_promise_t *)params;
-
printf("promise was rejected with error '%s'\n", (char *)promise->value);
-
return NULL;
-
}
-
-
void *done(void *context, void *params) {
-
static char *states[3] = { "pending", "resolved", "rejected" };
-
uel_promise_t *promise = (uel_promise_t *)params;
-
printf("operation done with state '%s'\n", states[promise->state]);
-
}
-
-
unsigned char c1 = 0;
-
uel_promise_t *p1 = uel_promise_create(&store, uel_nop()); // Creates a pending promise
-
uel_promise_then(p1, uel_closure_create(store_char, (void *)&c1));
-
uel_promise_catch(p1, uel_closure_create(report_error, NULL));
-
uel_promsie_always(p1, uel_closure_create(done, NULL));
-

This builds a segment chain attached to promise p1. Each segment added describes one synchronous step to be executed for each of the two settled states.

-

Segments are processed sequentially, from first to last, starting with the closure relative to the state the promise was settled as. The following table illustrates this chain:

- - - - - - - -
State Segment 1 Segment 2 Segment 3
resolved store_char nop done
rejected nop report_error done
-

The outcome of this chain is determined upon settling. For example, given the following resolution:

-
uel_promise_resolve(p1, (void *)10);
-

The first closure invoked is store_char, in segment 1. In the closure function, the test condition promise->value <= 255 is true, so the closure proceeds to store its value in the c1 variable.

-

As the promise remains resolved, it advances to segment 2, where it finds a nop (no-operation). This is due to the segment being attached via uel_promise_catch.

-

The promise then advances to segment 3, where it finds the done closure. The process then ends and the promise retains its state and value (UEL_PROMISE_RESOLVED and (void *)10 in this case). By then, c1 holds (char)10 and ‘operation done with state 'resolved’` is printed.

-

If instead the promise was resolved as:

uel_promise_resolve(p1, (void *)1000);
-

Then the test condition promise->value <= 255 would have failed. The store_char would then skip storing the value and would rather resettle the promise as rejected, with some error message as value. This effectively commutes the execution path to the rejected branch.

-

Once the store_char returns, as the promise is now rejected, the report_error closure is invoked and ‘promise was rejected with error 'Value too big’is printed. Thedoneclosure is then invoked and printsoperation done with state 'rejected'`.

-

Similarly, if instead the promise had been rejected as:

uel_promise_reject(p1, (void *)"Asynchronous operation failed");
-

Segment 1 would be ignored, report_error would be invoked and print ‘promise was rejected with error 'Asynchronous operation failed’and, at segment 3,donewould be invoked and printoperation done with state 'rejected'`.

-

Resettling can also be used for recovering from errors if it commutes back to resolved state. This constitutes an excellent exception system that allows errors raised in loose asynchronous operations to be rescued consistently. Even exclusively synchronous processes can benefit from this error rescuing system.

-

As a last note, segments can also resettle a promise as UEL_PROMISE_PENDING. This halts the synchronous stage immediately, leaving any unprocessed segments in place. This phase can be restarted by either resolving or rejecting the promise again.

-

Nested promises

-

Promises can be nested into each other, allowing for complex asynchronous operations to compose a single segment chain. This provides superb flow control for related asynchronous operations that would otherwise produce a lot of spaghetti code.

-

Whenever a promise segment returns any non-null value, it is cast to a promise pointer. The original promise then transitions back to pending state and awaits for the returned promise to settle. Once this new promise is settled, the original promise is resumed with whatever state and value the new promise was settled as.

-

For instance, suppose the programmer is programming an MCU that possesses an ADC with an arbitrarily long buffer and a DMA channel. The program must start the ADC, which will sample N times and store it in its buffer. After N samples have been taken, the DMA channel must be instructed to move it out of the ADC buffer into some memory-mapped buffer, where it will be processed.

-

This could be easily accomplished with signals or callbacks, but would eventually lead to confusing and discontinuous code. With nested promises, however, it is easy to describe the whole process into one single chain.

-

Suppose this is the implementation for the DMA and ADC modules:

-
// ADC implementation
-
static uel_promise_t *adc_promise;
-
-
// This ISR is called when the ADC finishes sampling
-
// the instructed number of samples
-
static void adc_isr() {
-
uel_promise_resolve(adc_promise, (void *)ADC_BUFFER);
-
adc_promise = NULL;
-
adc_isr_flag = 0;
-
}
-
-
// Launches the ADC and returns. This effectively starts an asynchronous operation.
-
static void *start_adc(void *context, void *params) {
-
uintptr_t count = (uintptr_t)context;
-
uel_promise_t *promise = (uel_promise_t *)params;
-
ADC_COUNT = count;
-
ADC_START = 1;
-
adc_promise = promise;
-
return NULL;
-
}
-
-
// Public interface function. Returns a promise that,
-
// when resolved, will contain the address of the buffer where
-
// data was sampled
-
uel_promise_t *adc_read(uintptr_t count) {
-
return uel_promise_create(&store, uel_closure_create(start_adc, (void *)count));
-
}
-
// DMA implementation
-
static uel_promise_ t *dma_promise;
-
-
// This ISR is called when the DMA channel has finished
-
// moving data
-
static void dma_isr() {
-
uel_promise_resolve(dma_promise, (void *)DMA_DESTINATION);
-
dma_promise = NULL;
-
dma_isr_flag = 0;
-
}
-
-
// Auxiliary structure to hold DMA mapping information
-
struct dma_mapping {
-
void *source;
-
void *destination;
-
uintptr_t count;
-
};
-
-
// Launches the DMA channel, starting an asynchronous operation
-
static void *start_dma(void *context, void *params) {
-
struct dma_mapping *mapping = (struct dma_mapping *)context;
-
uel_promise_t *promise = (uel_promise_t *)params;
-
DMA_SOURCE = mapping->source;
-
DMA_DESTINATION = mapping->destination;
-
DMA_COUNT = mapping->count;
-
DMA_START = 1;
-
adc_promise = promise;
-
return NULL;
-
}
-
-
// Public interface function.
-
// Returns a promise that, when resolved, will hold the address
-
// of the buffer to where data was moved
-
uel_promise_t *dma_move(void *destination, void *source, uintptr_t count) {
-
struct dma_mapping mapping = { source, destination, count };
-
return uel_promise_create(&store, uel_closure_create(start_adc, (void *)&mapping));
-
}
-

Implementing the project requirements is this simple:

-
#define N 10 // Will take 10 samples
-
-
static void *move_from_buffer(void *context, void *params) {
-
uel_promise_t *promise = (uel_promise_t *)params;
-
void *source = promise->value;
-
void *destination = context;
-
return (void *)dma_move(destination, source, N);
-
}
-
-
static void *data_moved(void *context, void *params) {
-
uel_promise_t *promise = (uel_promise_t *)params;
-
printf("Data moved to %p\n", promise->value);
-
return NULL;
-
}
-
-
// ...
-
-
uel_promise_t *promise = adc_read(N);
-
unsigned char destination[N];
-
uel_promise_then(promise, uel_closure_create(move_from_buffer, (void *)destination));
-
uel_promise_then(promise, uel_closure_create(data_moved, NULL));
-

Note that, in the above example, promises are resolved synchronously inside the ISR's. This may be not desirable due to performance reasons, but can be easily improved by enqueueing a closure that resolves nested promises into the event loop.

-

Promise destruction and promise helpers

-

To destroy a promise, call uel_promise_destroy(). This will release all segments and then the promise itself. Settling a promise after it has been destroyed is undefined behaviour.

-

Because settling and destroying promises are so frequent, there are helper functions that emit closures that automate this work:

-
// When invoked, destroys the promise
-
uel_closure_t destroyer = uel_promise_destroyer(promise);
-
-
// When invoked with some value, resolves the promise with that value
-
uel_closure_t resolver = uel_promise_resolver(promise);
-
-
// When invoked with some value, rejects the promise with that value
-
uel_closure_t rejecter = uel_promise_rejecter(promise);
-

Appendix B: Modules

-

Modules are independent units of behaviour, self-contained and self-allocated, with clear lifecycle hooks, interface and dependencies. They enforce separation of concerns and isolation by making clear how your code interacts with the rest of the application.

-

Modules are absolutely optional and very thin on the library side. They are basically a convention of how to write code in a fashion that works well with µEvLoop.

-

Modules can serve as a variety of purposes:

    -
  • They can act as bridges to static data, such as SFRs;
  • -
  • They can be object factories, meant to distribute and recycle objects to other modules;
  • -
  • They can act as services, background processes that interact with other parts of the application in a sattelite-fashion.
  • -
-

Module creation

-
// File: my_module.h
-
- - -
-
typedef struct my_module my_module_t; // Private implementation
-
-
uel_module_t *my_module(uel_application_t *my_app);
-
-
// Any functions' signatures to operate the module go here
-
// File: my_module.c
-
-
#include "my_module.h"
-
-
struct my_module {
-
uel_module_t base; // Inherits base interface
-
-
// Other properties
-
};
-
-
// The config hook is used to prepare the module.
-
// When it is fired by the `application`, all modules are guaranteed to be
-
// registered, but may still be in an inconsistent state.
-
// Modules are loaded in the order they are supplied, so previous modules will
-
// already be configured.
-
static void config(uel_module_t *mod){
-
// ...
-
}
-
-
// The launch hook is where the module should effectively start its functions.
-
// All modules here are guaranteed to be registered and properly configurated.
-
static void launch(uel_module_t *mod){
-
// ...
-
}
-
-
// The constructor function is the only mandatory symbol to be exported.
-
// This function should initialise all independent or readly available data.
-
// It must not be called more than once per module.
-
uel_module_t *my_module(uel_application_t *my_app){
-
static my_module_t module;
-
uel_module_init(&module.base, config, launch, my_app);
-
-
// Initialise other module's properties
-
-
return &module.base;
-
}
-

Module registration

-

Modules are operated by the application component. It is responsible for loading, configuring and launching each module.

-
// File: my_app_modules.h
-
-
#include "my_module.h"
-
-
// Each module must be identified by a positive integer, zero-indexed.
-
// Storing module IDs in an enum makes it easy to add new modules in the future.
-
enum MY_APP_MODULES {
-
MY_MODULE,
-
// other modules...,
-
MY_APP_MODULE_COUNT
-
};
-
// File: main.c
-
- -
#include "my_app_modules.h"
-
-
// Creates the controlling application
-
uel_application_t my_app;
-
uel_app_init(&my_app);
-
-
// Declares a list of module pointers to be supplied to the application.
-
uel_module_t *modules[MY_APP_MODULE_COUNT];
-
-
// Individually initialising pointers in the list ensures IDs always
-
// match their corresponding module, even if they change during development.
-
modules[MY_MODULE] = my_module(&my_app);
-
-
// This loads the modules into the application:
-
// - The module list is stored as the application registry;
-
// - Each module's configuration hook is sequentially invoked, according to
-
// their position in the registry;
-
// - Each module's launch hook is sequentially invoked, equally ordered by
-
// the registry.
-
uel_app_load(&my_app, modules, MY_APP_MODULE_COUNT);
-

Dependency Injection

-

There are two method for injecting a registered module: parametrised injection and ad-hoc injection. Each is adequate for a different situation:

-

Parametrised injection

-

Parametrised dependencies are dependencies that are supplied during module construction.

-

Given the following module header:

// File: my_greeter.h
-
-
#include "my_module.h"
- - -
-
typedef struct my_greeter my_greeter_t;
-
uel_module_t *my_greeter(
-
uel_application_t *my_app,
-
const char *name, // <-- Parametrised dependency
-
my_module_t *other_module // <-- Dependencies can be other modules
-
);
-

The application loading procedure would be:

// File: my_app_modules.h
-
-
enum MY_APP_MODULES {
-
MY_MODULE,
-
MY_GREETER,
-
MY_APP_MODULE_COUNT
-
};
-

```c // File: main.c

-

uel_module_t *modules[MY_APP_MODULE_COUNT];

-

modules[MY_MODULE] = my_module(&my_app);

-

// Injects parametrised dependencies name and other_module modules[MY_GREETER] = my_greeter(&my_app, "King Kong", (my_module_t *)modules[MY_MODULE]);

-

uel_app_load(&my_app, modules, MY_APP_MODULE_COUNT)

Parametrised injection facilitates reasoning about what each module depends on and in which order they are loaded. This is the preferable way to inject dependencies into modules.
-
-
#### Ad-hoc injection
-
Ad-hoc injections can occur anywhere, including places outside the scope of the application's managed modules.
-
-
```c
-
// ANYWHERE with access to `my_app`:
-
-
#include <uevloop/system/containers/application.h>
-
#include "my_greeter.h"
-
#include "my_app_modules.h"
-
-
my_greeter_t *greeter = (my_greeter_t *)uel_app_require(&my_app, MY_GREETER);
-

While Ad-hoc injections seem easier, they make more difficult to know on which modules some particular piece of code depends on. Also, because they require the modules to already be loaded into the registry, they cannot be used during the configuration phase.

-

Appendix C: Useful goodies

-

Iterators

-

Iterators are abstractions on arbitrary collections of items. They provide a uniform interface for yielding each element in the iterated collection, disregarding implementation details of such collection.

-

There are two iterator specialisations shipped with µEvLoop:

-

Array iterators

-
-
#define NUMS_LENGTH 5
-
-
uintptr_t nums[NUMS_LENGTH] = { 1, 2, 3, 4, 5 };
-
uel_iterator_array_t array_iterator =
-
uel_iterator_array_create(nums, NUMS_LENGTH, sizeof(uintptr_t));
-

Linked list iterators

-
- -
-
uel_llist_node_t nodes[] = {
-
{ (void *)1, NULL },
-
{ (void *)2, NULL ),
-
{ (void *)3, NULL }
-
};
-
uel_llist_t list;
- -
uel_llist_push_head(&list, &nodes[0]);
-
uel_llist_push_head(&list, &nodes[1]);
-
- -

Iterator operation

-

Iterators live entirely on an embedded function pointer, next. It is responsible by yielding a pointer to each element in the collection.

-

```c // cast to generic iterator uel_iterator_t *iterator = (uel_iterator_t *)

-

// when supplied with NULL as parameter to next, yields // the first element in the collection int *current = NULL;

-

while(true){ current = (int *)iterator->next(iterator, (void *)current); if(current != NULL){ // do something }else break; // when there are no more elements , yields NULL } ```

-

Iteration helpers

-

Besides manually operating an iterator, there are several iteration helpers that automatise work.

-

```c #include <uevloop/utils/closure.h>

-

void *accumulate(void *context, void *params){ uintptr_t *acc = (uintptr_t *)context; uintptr_t num = *(uintptr_t *)params; *acc += num; return (void *)true; // required; returning false is equivalent to a break }

-

uintptr_t acc = 0; uel_closure_t acumulate_into_acc = uel_closure_create(accumulate, (void *)&acc);

-

uel_iterator_foreach(iterator, &accumulate_into_acc); // if iterator is the same array iterator defined previously, // acc == 15

There are many more iteration helpers, check the more details on [the docs](https://andsmedeiros.github.io/uevloop/html/iterator_8h.html).
-
-
#### Custom iterators
-
-
Iterators are meant to be expansible. If you need to enumerate your own type, write an iterator specialisation:
-
-
```c
-
struct my_collection_type{
-
// whatever, could be a binary tree, a hash table etc
-
};
-
struct my_collection_iterator{
-
uel_iterator_t base; // inherits the base interface
-
// any other state necessary for iteration
-
};
-
void *my_collection_next(my_collection_iterator *iterator, void *last){
-
// implement your iteration logic here.
-
// remember:
-
// if last == NULL, yield the first element.
-
// if last == last element in collection, yield NULL.
-
}
-
-
struct my_collection_type collection; // initialised as needed
-
struct my_collection_iterator iterator = {
-
{ (uel_iterator_next_t)&my_collection_next, (void *)&collection },
-
// initialise any state as necessary
-
};
-

Note that base is required to be the first member in your custom iterator structure. That way, a pointer to your iterator can be safely cast to uel_iterator_t * forth and back.

-

Conditionals

-

Conditionals are functional switches in the form of a tuple of closures <test, if_true, if_false>.

-

When applied to some input, this input is submitted to the test closure. If it returns true, if_true closure is invoked, otherwise, if_false is invoked. All closures take the same input as arguments.

-
-
#include <stdio.h>
-
-
void *is_divisible(void *context, void *params){
-
uintptr_t divisor = (uintptr_t)context;
-
uintptr_t dividend = (uintptr_t)params;
-
return (void *)(uintptr_t)(dividend % divisor != 0);
-
}
-
-
void *qualify_number(void *context, void *params){
-
char *parity = (char *)context;
-
uintptr_t num = (uintptr_t)params;
-
printf("%d is %s\n", num, parity);
-
return NULL;
-
}
-
-
uel_closure_t is_even =
-
uel_closure_create(is_divisible, (void *)2);
-
uel_closure_t print_even =
-
uel_closure_create(qualify_number, (void *)"even");
-
uel_closure_t print_odd =
-
uel_closure_create(qualify_number, (void *)"odd");
-
-
uel_conditional_t numer_parity;
-
uel_conditional_init(&number_parity, is_even, print_even, print_odd);
-
-
uel_conditional_apply(&number_parity, (void *)1);
-
// prints "1 is odd"
-
-
uel_conditional_apply(&number_parity, (void *)2);
-
// prints "2 is even"
-

Pipelines

-

Pipelines are sequences of closures whose outputs are connected to the next closure's input.

-

When applied to some input, this input is passed along each closure, being transformed along the way. Applying a pipeline returns the value returned by the last closure in it.

-
-
-
void *exponentiate(void *context, void *params){
-
uintptr_t power = (uintptr_t)context;
-
uintptr_t base = (uintptr_t)params;
-
return (void *)(uintptr_t)pow(base, power);
-
}
-
void *add(void *context, void *params){
-
uintptr_t term1 = (uintptr_t)context;
-
uintptr_t term2 = (uintptr_t)params;
-
return (void *)(uintptr_t)(term1 + term2);
-
}
-
-
uel_closure_t square = uel_closure_create(exponentiate, (void *)2);
-
uel_closure_t increment = uel_closure_create(add, (void *)1);
-
-
// creates the math_pipeline, equivalent to the function f(x) = x^2 + 1
-
UEL_PIPELINE_DECLARE(math, square, increment);
-
-
uintptr_t res = (uintptr_t)uel_pipeline_apply(&math_pipeline, (void *)5);
-
// res == f(5) == (5^2 + 1) == 26
-

Functional helpers

-

Iterators, conditionals and pipelines are objects associated with synchronous operations.

-

To make more suitable to asynchronous contexts, there are numerous helpers that can abstract some of their operational details and export them into portable closures.

-

Please read the docs to find out more about them.

-

Automatic pools and automatic pointers

-

Automatic pools are wrappers objects that enhance the abilities of object pools. They allow constructors and destructors to be attached and, instead of yielding bare pointers, yield uel_autoptr_t automatic pointers.

-

Automatic pointers are objects that associate some object to the pool it is from, making it trivial to destroy the object regardless of access to its source. An automatic pointer issued to an object of type T can be safely cast to T**. Casting to any other pointer type is undefined behaviour.

-

Automatic pool creation

-

Automatic pools are created and initialised in very similar ways to object pools:

-
-
-
#define TUPLE_POOL_SIZE_LOG2N 5 // 32 tuples
-
struct tuple {
-
int a;
-
int b;
-
};
-
UEL_DECLARE_AUTOPOOL_BUFFERS(struct tuple, TUPLE_POOL_SIZE_LOG2N, tuple);
-
uel_autopool_t tuple_pool;
- -
&tuple_pool,
-
TUPLE_POOL_SIZE_LOG2N,
-
sizeof(struct tuple),
- -
);
-

Automatic pool operation and automatic pointer destruction

-

After an automatic pool has been created, it can allocate and deallocate objects, just like object pools.

-
struct tuple **t = (struct tuple **)uel_autopool_alloc(&tuple_pool);
-
if(t) {
-
(**t).a = 1;
-
(**t).b = 10;
- -
}
-

Automatic pool constructors and destructors

-

It is possible to attach a constructor and a destructor to some automatic pool. This are closures that will be invoked upon object allocation and deallocation, taking a bare pointer to the object being operated on.

-
static void *default_tuple(void *context, void *params) {
-
struct tuple *value = (struct tuple *)context;
-
struct tuple *t = (struct tuple *)params;
-
*t = *value;
-
return NULL;
-
}
-
-
static void *zero_tuple(void *context, void *params) {
-
struct tuple *t = (struct tuple *)params;
-
t->a = 0;
-
t->b = 0;
-
return NULL;
-
}
-
-
// ...
-
-
static struct tuple default_value = { 10, 100 };
-
uel_autopool_set_contructor(
-
&tuple_pool,
-
uel_closure_create(default_tuple, (void *)&default_value)
-
);
- -
&tuple_pool,
-
uel_closure_create(zero_tuple, NULL)
-
);
-
-
struct tuple **t1 = (struct tuple **)uel_autopool_alloc(&tuple_pool);
-
// t1.a == 10, t1.b == 100
-
- -
// before t1 is dealloc'ed t1.a == 0, t1.b == 0
-

Concurrency model

-

µEvLoop is meant to run baremetal, primarily in simple single-core MCUs. That said, nothing stops it from being employed as a side library in RTOSes or in full-fledged x86_64 multi-threaded desktop applications.

-

Communication between asynchronous contexts, such as ISRs and side threads, is done through some shared data structures defined inside the library's core components. As whenever dealing with non-atomic shared memory, there must be synchronisation between accesses to these structures as to avoid memory corruption.

-

µEvLoop does not try to implement a universal locking scheme fit for any device. Instead, some generic critical section definition is provided.

-

Critical sections

-

By default, critical sections in µEvLoop are a no-op. They are provided as a set of macros that can be overriden by the programmer to implement platform specific behaviour.

-

For instance, while running baremetal it may be only necessary to disable interrupts to make sure accesses are synchronised. On a RTOS multi-threaded environment, on the other hand, it may be necessary to use a mutex.

-

There are three macros that define critical section implementation:

-
    -
  1. UEL_CRITICAL_SECTION_OBJ_TYPE

    -

    If needed, a global critical section object can be declared. If this macro is defined, this object will be available to any critical section under the symbol uel_critical_section.

    -

    The UEL_CRITICAL_SECTION_OBJ_TYPE macro defines the type of the object. It is the programmer's responsibility to declare, globally allocate and initialise the object.

    -
  2. -
  3. UEL_CRITICAL_ENTER

    -

    Enters a new critical section. From this point until the critical section exits, no other thread or ISR may attempt to access the system's shared memory.

    -
  4. -
  5. UEL_CRITICAL_EXIT

    -

    Exits the current critical section. After this is called, any shared memory is allowed to be claimed by some party.

    -
  6. -
-

Motivation

-

I often work with small MCUs (8-16bits) that simply don't have the necessary power to run a RTOS or any fancy scheduling solution. Right now I am working on a new commercial project and felt the need to build something by my own. µEvLoop is my bet on how a modern, interrupt-driven and predictable embedded application should be. I am also looking for a new job and needed to improve my portfolio.

-

Roadmap

-
    -
  • Better error handling
  • -
  • Logging helpers
  • -
  • Macro shortcuts for frequently used functions
  • -
  • More lifecycle hooks for modules
  • -
  • Application teardown/exit
  • -
  • Implement application signals
  • -
-
-
-
void uel_signal_emit(uel_signal_t signal, uel_signal_relay_t *relay, void *params)
Emits a signal at the supplied relay. Any closure listening to this signal will be asynchronously inv...
-
uel_iterator_array_t uel_iterator_array_create(void *collection, size_t count, size_t size)
Creates a new array iterator.
-
Defines pipelines, structures to hold many closures and functions to invoke them sequentially,...
-
Defines a simple implementation of linked lists and functions to manipulate it.
-
void * uel_cqueue_pop(uel_cqueue_t *queue)
Pops an element from the queue.
-
void uel_evloop_run(uel_evloop_t *event_loop)
Triggers a runloop.
-
void uel_promise_resettle(uel_promise_t *promise, uel_promise_state_t state, void *value)
Resettles a promise as the supplied state. Unlike uel_promise_resolve() and uel_promise_reject(),...
-
uel_promise_t * uel_promise_create(uel_promise_store_t *store, uel_closure_t closure)
Acquires a new promise from the supplied store and binds it to the asynchronous operation started by ...
-
uel_autoptr_t uel_autopool_alloc(uel_autopool_t *pool)
Allocates an object and wrap it in a automatic pointer.
-
#define UEL_DECLARE_AUTOPOOL_BUFFERS(type, size_log2n, id)
Declares the necessary buffers to back an automatic pool, so the programmer doesn't have to reason mu...
Definition: automatic-pool.h:134
-
void ** uel_autoptr_t
Aliases uel_autoptr_t to void ** so it can be cast to pointers to other types.
Definition: automatic-pool.h:34
-
void uel_syspools_init(uel_syspools_t *pools)
Initialise the system pools.
-
void uel_autopool_init(uel_autopool_t *pool, size_t size_log2n, size_t item_size, uint8_t *object_buffer, struct uel_autoptr *autoptr_buffer, void **queue_buffer)
Initialises an automatic pool.
-
void uel_sysqueues_init(uel_sysqueues_t *queues)
Initialises a new uel_sysqueues_t.
-
Defines closures, objects that bind functions to creating and calling contexts.
-
void * uel_objpool_acquire(uel_objpool_t *pool)
Acquires an object from the pool.
- -
void uel_promise_after(uel_promise_t *promise, uel_closure_t resolve, uel_closure_t reject)
Adds a new synchronous segment to the promise. Either of its closures will be invoked,...
-
Defines automatic pointers and automatic pools, objects that wrap object pools and objects managed by...
-
uel_closure_t uel_promise_destroyer(uel_promise_t *promise)
Creates a closure bound to a promise. When the closure is invoked, the promise is destroyed....
-
uel_closure_t uel_nop()
Returns a closure that does nothing.
-
void * uel_conditional_apply(uel_conditional_t *conditional, void *params)
Applies a conditional do some input.
-
#define UEL_DECLARE_OBJPOOL_BUFFERS(type, size_log2n, id)
Declares the necessary buffers to back an object pool, so the programmer doesn't have to reason much ...
Definition: object-pool.h:85
-
#define UEL_AUTOPOOL_BUFFERS(id)
Refers to a previously declared buffer set.
Definition: automatic-pool.h:146
-
void uel_autoptr_dealloc(uel_autoptr_t autoptr)
Deallocates an automatic pointer.
-
void uel_promise_then(uel_promise_t *promise, uel_closure_t resolve)
Adds a new synchronous segment to the promise. It will be invoked upon promise resolution....
-
uel_closure_t uel_closure_create(uel_closure_function_t function, void *context)
Creates a new closure.
-
@ UEL_PROMISE_REJECTED
A promise that has been rejected with some error.
Definition: promise.h:22
-
Defines object pools, arrays of pre-allocated objects for dynamic use.
-
void uel_cqueue_init(uel_cqueue_t *queue, void **buffer, uintptr_t size_log2n)
Initialised a circular queue object.
-
void uel_promise_always(uel_promise_t *promise, uel_closure_t always)
Adds a new synchronous segment to the promise. The same closure will be invoked on promise settling r...
-
void uel_evloop_enqueue_closure(uel_evloop_t *event_loop, uel_closure_t *closure, void *value)
Enqueues a closure to be invoked.
-
bool uel_objpool_release(uel_objpool_t *pool, void *element)
Releases an object to the pool.
-
void uel_llist_init(uel_llist_t *list)
Initialised a linked list.
-
void * uel_closure_invoke(uel_closure_t *closure, void *params)
Invokes a closure and returns whatever value it returned.
-
uel_promise_store_t uel_promise_store_create(uel_objpool_t *promise_pool, uel_objpool_t *segment_pool)
Creates a new promise store from the promise and segment pools.
-
Defines iterators, structures and functions suitable for enumerating other data structures.
-
Defines circular queues, fast and efficient FIFO data structures.
-
uel_iterator_llist_t uel_iterator_llist_create(uel_llist_t *list)
Creates a new linked list iterator.
-
uel_signal_listener_t uel_signal_listen_once(uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
Attaches a listener closure to some signal at a particular relay. The listener closure will be invoke...
-
#define UEL_PIPELINE_DECLARE(id,...)
Helper macro to create a pipeline and its required data structures.
Definition: pipeline.h:59
-
void uel_promise_reject(uel_promise_t *promise, void *value)
Settles a promise as rejected and, synchronously, invokes the reject closures of each segment in the ...
-
uel_iterator_t uel_iterator_llist_t
Alias to uel_iterator_t. Iterator suitable to traverse linked lists.
Definition: iterator.h:158
-
uel_event_t * uel_sch_run_later(uel_scheduer_t *scheduler, uint16_t timeout_in_ms, uel_closure_t closure, void *value)
Enqueues a closure for later execution.
-
void uel_app_init(uel_application_t *app)
Initialises an uel_application_t instance.
-
void uel_module_init(uel_module_t *module, uel_module_hook_t config, uel_module_hook_t launch, struct uel_application *app)
Initialised a module.
-
void * uel_pipeline_apply(uel_pipeline_t *pipeline, void *params)
Applies a pipeline to some input.
-
uel_closure_t uel_promise_rejecter(uel_promise_t *promise)
Creates a closure bound to a promise. When the closure is invoked with some parameter,...
-
uel_closure_t uel_promise_resolver(uel_promise_t *promise)
Creates a closure bound to a promise. When the closure is invoked with some parameter,...
-
uel_event_t * uel_sch_run_at_intervals(uel_scheduer_t *scheduler, uint16_t interval_in_ms, bool immediate, uel_closure_t closure, void *value)
Enqueues a closure for execution at intervals.
-
void uel_promise_catch(uel_promise_t *promise, uel_closure_t reject)
Adds a new synchronous segment to the promise. It will be invoked upon promise rejection....
-
uel_signal_listener_t uel_signal_listen(uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
Attaches a listener closure to some signal at a particular relay.
-
void uel_autopool_set_destructor(uel_autopool_t *pool, uel_closure_t destructor)
Sets the destructor closure of an autopool.
-
void uel_sch_update_timer(uel_scheduer_t *scheduler, uint32_t timer)
Updates the internal time counter.
-
#define UEL_OBJPOOL_BUFFERS(id)
Refers to a previously declared buffer set.
Definition: object-pool.h:96
-
void uel_llist_push_head(uel_llist_t *list, uel_llist_node_t *node)
Pushes a node to the head of the list.
-
A container for the system's internal queues.
-
void uel_app_load(uel_application_t *app, uel_module_t **modules, size_t module_count)
Loads modules into an application and run their lifecycle hooks.
-
Contains definitions of functional conditionals, structures that act as if-else constructs.
-
bool uel_cqueue_push(uel_cqueue_t *queue, void *element)
Pushes an element into the queue.
-
void uel_signal_unlisten(uel_signal_listener_t listener)
Marks a signal listener as expired. When its corresponding signal is emitted, this listener's closure...
-
struct uel_event_listener * uel_signal_listener_t
Defines a reference type suitable to manipulate the actual listener event's context.
Definition: signal.h:27
-
void uel_promise_resolve(uel_promise_t *promise, void *value)
Settles a promise as resolved and, synchronously, invokes the resolve closures of each segment in the...
-
A container for the system's internal pools.
-
void uel_sch_manage_timers(uel_scheduer_t *scheduler)
Enqueue timers that are due to be processed in the event queue.
-
void uel_objpool_init(uel_objpool_t *pool, size_t size_log2n, size_t item_size, uint8_t *buffer, void **queue_buffer)
Initialises an object pool.
-
The application module is a convenient top-level container for the system internals.
-
void uel_conditional_init(uel_conditional_t *conditional, uel_closure_t test, uel_closure_t if_true, uel_closure_t if_false)
Initialises a conditional structure.
- - - - diff --git a/docs/html/iterator_8h.html b/docs/html/iterator_8h.html deleted file mode 100644 index 17e3813..0000000 --- a/docs/html/iterator_8h.html +++ /dev/null @@ -1,635 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/iterator.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
iterator.h File Reference
-
-
- -

Defines iterators, structures and functions suitable for enumerating other data structures. -More...

-
-Include dependency graph for iterator.h:
-
-
- - - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Data Structures

struct  uel_iterator_t
 Iterators are data structures that wrap arbitrary collections of data and define ways of enumerating them. More...
 
struct  uel_iterator_array_t
 A specialised iterator suitable for iterating over arrays of arbitrary data. More...
 
- - - -

-Macros

#define UEL_ITERATOR_MAP_BOUNDLESS   UINT_MAX
 
- - - - -

-Typedefs

typedef uel_iterator_t uel_iterator_llist_t
 Alias to uel_iterator_t. Iterator suitable to traverse linked lists. More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

bool uel_iterator_foreach (uel_iterator_t *iterator, uel_closure_t *closure)
 Applies a closure to an enumerable collection. More...
 
size_t uel_iterator_map (uel_iterator_t *iterator, uel_closure_t *closure, void **destination, size_t limit)
 Applies a closure to an enumerable collection and stores its results. More...
 
void * uel_iterator_find (uel_iterator_t *iterator, uel_closure_t *closure)
 Finds the first element enumerated by an iterator that passes the supplied test. More...
 
size_t uel_iterator_count (uel_iterator_t *iterator, uel_closure_t *closure)
 Counts elements enumerated by an iterator that pass the supplied test. More...
 
bool uel_iterator_all (uel_iterator_t *iterator, uel_closure_t *closure)
 Determines whether all elements enumerated by an iterator pass the supplied test or not. More...
 
bool uel_iterator_none (uel_iterator_t *iterator, uel_closure_t *closure)
 Determines whether all elements enumerated by an iterator fail the supplied test or not. More...
 
bool uel_iterator_any (uel_iterator_t *iterator, uel_closure_t *closure)
 Determines whether any elements enumerated by an iterator pass the supplied test or not. More...
 
void * uel_iterator_array_next (uel_iterator_array_t *iterator, void *last)
 Yields elements in a array. More...
 
uel_iterator_array_t uel_iterator_array_create (void *collection, size_t count, size_t size)
 Creates a new array iterator. More...
 
void * uel_iterator_llist_next (uel_iterator_t *iterator, void *last)
 Yields elements in a linked list. More...
 
uel_iterator_llist_t uel_iterator_llist_create (uel_llist_t *list)
 Creates a new linked list iterator. More...
 
-

Detailed Description

-

Defines iterators, structures and functions suitable for enumerating other data structures.

-

Macro Definition Documentation

- -

◆ UEL_ITERATOR_MAP_BOUNDLESS

- -
-
- - - - -
#define UEL_ITERATOR_MAP_BOUNDLESS   UINT_MAX
-
-

Defines the maximum possible iteration limit for the uel_iterator_map() function.

- -
-
-

Typedef Documentation

- -

◆ uel_iterator_llist_t

- -
-
- - - - -
typedef uel_iterator_t uel_iterator_llist_t
-
- -

Alias to uel_iterator_t. Iterator suitable to traverse linked lists.

-

Because when traversing a linked list we need only know one element to know the next one, there is no need to store any additional state in linked list iterators.

- -
-
-

Function Documentation

- -

◆ uel_iterator_all()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_iterator_all (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Determines whether all elements enumerated by an iterator pass the supplied test or not.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether all elements are approved by the test closure.
- -
-
- -

◆ uel_iterator_any()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_iterator_any (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Determines whether any elements enumerated by an iterator pass the supplied test or not.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether any elements are approved by the test closure. If such element is found, this function returns early.
- -
-
- -

◆ uel_iterator_array_create()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
uel_iterator_array_t uel_iterator_array_create (void * collection,
size_t count,
size_t size 
)
-
- -

Creates a new array iterator.

-
Parameters
- - - - -
collectionThe array to be enumerated
countThe number of elements in this array
sizeThe size of each element in the array
-
-
-
Returns
The created iterator
- -
-
- -

◆ uel_iterator_array_next()

- -
-
- - - - - - - - - - - - - - - - - - -
void* uel_iterator_array_next (uel_iterator_array_t * iterator,
void * last 
)
-
- -

Yields elements in a array.

-
Parameters
- - - -
iteratorThe iterator thar enumerates the elements in the target array
lastThe last element yielded. If NULL, returns the first element.
-
-
-
Returns
The next element in the array with respect to the last one provided. If there are no more elements in the array, this returns NULL.
- -
-
- -

◆ uel_iterator_count()

- -
-
- - - - - - - - - - - - - - - - - - -
size_t uel_iterator_count (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Counts elements enumerated by an iterator that pass the supplied test.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe test to be applied against each enumerated element
-
-
-
Returns
How many elements successfully passed the supplied test
- -
-
- -

◆ uel_iterator_find()

- -
-
- - - - - - - - - - - - - - - - - - -
void* uel_iterator_find (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Finds the first element enumerated by an iterator that passes the supplied test.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe test to be applied against each enumerated element
-
-
-
Returns
The address of the first element that passes the supplied test. If no such element is found, returns NULL.
- -
-
- -

◆ uel_iterator_foreach()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_iterator_foreach (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Applies a closure to an enumerable collection.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe closure to be invoked with each element in the enumerated collection as parameter. If this closure returns false, the iteration will be halted.
-
-
-
Returns
Whether the collection was fully iterated over or if the process was halted by returning false.
- -
-
- -

◆ uel_iterator_llist_create()

- -
-
- - - - - - - - -
uel_iterator_llist_t uel_iterator_llist_create (uel_llist_t * list)
-
- -

Creates a new linked list iterator.

-
Parameters
- - -
listThe linked list to be enumerated
-
-
-
Returns
The created iterator
- -
-
- -

◆ uel_iterator_llist_next()

- -
-
- - - - - - - - - - - - - - - - - - -
void* uel_iterator_llist_next (uel_iterator_t * iterator,
void * last 
)
-
- -

Yields elements in a linked list.

-
Parameters
- - - -
iteratorThe iterator thar enumerates the elements in the target list
lastThe last element yielded. If NULL, returns the first element.
-
-
-
Returns
The next element in the list with respect to the last one provided. If there are no more elements in the list, this returns NULL.
- -
-
- -

◆ uel_iterator_map()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
size_t uel_iterator_map (uel_iterator_t * iterator,
uel_closure_t * closure,
void ** destination,
size_t limit 
)
-
- -

Applies a closure to an enumerable collection and stores its results.

-

This function takes an iterator that enumerates elements in a collection and yields each one to a closure. The return value of each closure call is stored in an array.

-
Parameters
- - - - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe closure to be invoked with each element in the enumerated collection ad parameter.
destinationThe destination of the data produced by the invoked closure. This must be an array of void pointers large enough to store all produced data
limitThe maximum size of the destination buffer. If collection is larger than this array, in elements, it will not be iterated entirely, only up to the limitth element.
-
-
-
Returns
The number of effectively iterated elements.
- -
-
- -

◆ uel_iterator_none()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_iterator_none (uel_iterator_t * iterator,
uel_closure_t * closure 
)
-
- -

Determines whether all elements enumerated by an iterator fail the supplied test or not.

-
Parameters
- - - -
iteratorThe iterator that enumerates the elements of some collection
closureThe test to be applied against each enumerated element
-
-
-
Returns
Whether all elements are reproved by the test closure.
- -
-
-
- - - - diff --git a/docs/html/iterator_8h__dep__incl.map b/docs/html/iterator_8h__dep__incl.map deleted file mode 100644 index bb9bec5..0000000 --- a/docs/html/iterator_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/iterator_8h__dep__incl.md5 b/docs/html/iterator_8h__dep__incl.md5 deleted file mode 100644 index 3a81273..0000000 --- a/docs/html/iterator_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d1aa05b9f71b76b45f7b2fda325e2fcf \ No newline at end of file diff --git a/docs/html/iterator_8h__dep__incl.png b/docs/html/iterator_8h__dep__incl.png deleted file mode 100644 index 4f878b1475e10c733b5d039239e762e1741a7b14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4930 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 - - - - diff --git a/docs/html/iterator_8h__incl.md5 b/docs/html/iterator_8h__incl.md5 deleted file mode 100644 index 945f58d..0000000 --- a/docs/html/iterator_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -952aa586340a674cafb3671faa6525af \ No newline at end of file diff --git a/docs/html/iterator_8h__incl.png b/docs/html/iterator_8h__incl.png deleted file mode 100644 index dc0b99a89230555cd059de3ff53dbc23f2477755..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9650 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 diff --git a/docs/html/iterator_8h_source.html b/docs/html/iterator_8h_source.html deleted file mode 100644 index 315f34a..0000000 --- a/docs/html/iterator_8h_source.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/iterator.h Source File - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
iterator.h
-
-
-Go to the documentation of this file.
1 
-
7 #ifndef UEL_ITERATOR_H
-
8 #define UEL_ITERATOR_H
-
9 
-
11 #include <stdlib.h>
-
12 #include <limits.h>
-
14 
- -
16 #include "uevloop/utils/closure.h"
-
17 
-
28 typedef struct uel_iterator uel_iterator_t;
-
29 struct uel_iterator{
-
41  void * (* next)(uel_iterator_t *, void *);
-
43  void *collection;
-
44 };
-
45 
-
55 bool uel_iterator_foreach(uel_iterator_t *iterator, uel_closure_t *closure);
-
56 
-
73 size_t uel_iterator_map(uel_iterator_t *iterator, uel_closure_t *closure, void **destination, size_t limit);
-
74 
-
83 void *uel_iterator_find(uel_iterator_t *iterator, uel_closure_t *closure);
-
84 
-
91 size_t uel_iterator_count(uel_iterator_t *iterator, uel_closure_t *closure);
-
92 
-
100 bool uel_iterator_all(uel_iterator_t *iterator, uel_closure_t *closure);
-
101 
-
109 bool uel_iterator_none(uel_iterator_t *iterator, uel_closure_t *closure);
-
110 
-
119 bool uel_iterator_any(uel_iterator_t *iterator, uel_closure_t *closure);
-
120 
-
124 typedef struct uel_iterator_array uel_iterator_array_t;
- -
127  uel_iterator_t base;
-
129  size_t item_count;
-
131  size_t item_size;
-
132 };
-
133 
-
141 void *uel_iterator_array_next(uel_iterator_array_t *iterator, void *last);
-
142 
-
150 uel_iterator_array_t uel_iterator_array_create(void *collection, size_t count, size_t size);
-
151 
-
158 typedef uel_iterator_t uel_iterator_llist_t;
-
159 
-
167 void *uel_iterator_llist_next(uel_iterator_t *iterator, void *last);
-
168 
- -
175 
-
178 #define UEL_ITERATOR_MAP_BOUNDLESS UINT_MAX
-
179 
-
180 #endif /* UEL_ITERATOR_H */
-
-
size_t uel_iterator_map(uel_iterator_t *iterator, uel_closure_t *closure, void **destination, size_t limit)
Applies a closure to an enumerable collection and stores its results.
-
uel_iterator_array_t uel_iterator_array_create(void *collection, size_t count, size_t size)
Creates a new array iterator.
-
Defines a simple implementation of linked lists and functions to manipulate it.
-
size_t item_size
The size of each element in the array.
Definition: iterator.h:131
-
void * uel_iterator_find(uel_iterator_t *iterator, uel_closure_t *closure)
Finds the first element enumerated by an iterator that passes the supplied test.
-
Defines closures, objects that bind functions to creating and calling contexts.
-
bool uel_iterator_any(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether any elements enumerated by an iterator pass the supplied test or not.
-
uel_iterator_t base
The base iterator interface.
Definition: iterator.h:127
-
void * uel_iterator_array_next(uel_iterator_array_t *iterator, void *last)
Yields elements in a array.
-
size_t uel_iterator_count(uel_iterator_t *iterator, uel_closure_t *closure)
Counts elements enumerated by an iterator that pass the supplied test.
-
bool uel_iterator_all(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether all elements enumerated by an iterator pass the supplied test or not.
-
bool uel_iterator_foreach(uel_iterator_t *iterator, uel_closure_t *closure)
Applies a closure to an enumerable collection.
-
uel_iterator_llist_t uel_iterator_llist_create(uel_llist_t *list)
Creates a new linked list iterator.
-
uel_iterator_t uel_iterator_llist_t
Alias to uel_iterator_t. Iterator suitable to traverse linked lists.
Definition: iterator.h:158
-
bool uel_iterator_none(uel_iterator_t *iterator, uel_closure_t *closure)
Determines whether all elements enumerated by an iterator fail the supplied test or not.
-
Iterators are data structures that wrap arbitrary collections of data and define ways of enumerating ...
Definition: iterator.h:29
-
void * collection
A reference to the collection being iterated.
Definition: iterator.h:43
-
void * uel_iterator_llist_next(uel_iterator_t *iterator, void *last)
Yields elements in a linked list.
-
size_t item_count
The number of elements in the array.
Definition: iterator.h:129
-
A specialised iterator suitable for iterating over arrays of arbitrary data.
Definition: iterator.h:125
- - - - diff --git a/docs/html/jquery.js b/docs/html/jquery.js deleted file mode 100644 index 103c32d..0000000 --- a/docs/html/jquery.js +++ /dev/null @@ -1,35 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** - * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler - * Licensed under MIT - * @author Ariel Flesler - * @version 2.1.2 - */ -;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 - * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/linked-list_8h.html b/docs/html/linked-list_8h.html deleted file mode 100644 index 905c741..0000000 --- a/docs/html/linked-list_8h.html +++ /dev/null @@ -1,493 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/linked-list.h File Reference - - - - - - - - - -
-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
- -
-
linked-list.h File Reference
-
-
- -

Defines a simple implementation of linked lists and functions to manipulate it. -More...

-
-Include dependency graph for linked-list.h:
-
-
- - - - -
-
-This graph shows which files directly or indirectly include this file:
-
-
- - - - - - - - - - - - -
-
-

Go to the source code of this file.

- - - - - - - - -

-Data Structures

struct  uel_llist_node_t
 Defines a node of the linked list. Holds a void pointer. More...
 
struct  uel_llist_t
 Defines a linked list. If it is empty, head == tail == NULL. Pushing or popping from both the head or tail is always O(1). More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Functions

void uel_llist_init (uel_llist_t *list)
 Initialised a linked list. More...
 
void uel_llist_push_head (uel_llist_t *list, uel_llist_node_t *node)
 Pushes a node to the head of the list. More...
 
void uel_llist_push_tail (uel_llist_t *list, uel_llist_node_t *node)
 Pushes a node to the tail of the list. More...
 
uel_llist_node_t * uel_llist_pop_head (uel_llist_t *list)
 Pops a node from the head of the list. More...
 
uel_llist_node_t * uel_llist_pop_tail (uel_llist_t *list)
 Pops a node from the tail of the list. More...
 
uel_llist_node_t * uel_llist_peek_head (uel_llist_t *list)
 Peeks the element at the head of the list. More...
 
uel_llist_node_t * uel_llist_peek_tail (uel_llist_t *list)
 Peeks the element at the tail of the list. More...
 
bool uel_llist_remove (uel_llist_t *list, uel_llist_node_t *node)
 Removes a node from the queue. More...
 
uel_llist_t uel_llist_remove_while (uel_llist_t *list, uel_closure_t *should_remove)
 Splits a list in two. The rupture point is determined by the supplied closure. More...
 
void uel_llist_insert_at (uel_llist_t *list, uel_llist_node_t *node, uel_closure_t *should_insert)
 Scans a list until it finds a suitable spot to insert the provided node. More...
 
-

Detailed Description

-

Defines a simple implementation of linked lists and functions to manipulate it.

-

Function Documentation

- -

◆ uel_llist_init()

- -
-
- - - - - - - - -
void uel_llist_init (uel_llist_t * list)
-
- -

Initialised a linked list.

-
Parameters
- - -
listThe list to be initialised. It will be empty after initialisation.
-
-
- -
-
- -

◆ uel_llist_insert_at()

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - -
void uel_llist_insert_at (uel_llist_t * list,
uel_llist_node_t * node,
uel_closure_t * should_insert 
)
-
- -

Scans a list until it finds a suitable spot to insert the provided node.

-

This function iterates the linked list invoking the supplied closure until it returns true. The supplied node is then inserted at this position.

-

The should_insert closure will be invoked for each pair of node addresses in the range [NULL, &NODE_1, &NODE_2, ..., &NODE_N, NULL] as parameter. When it finds a suitable position, it must return true.

-
Parameters
- - - - -
listThe list to insert the node at
nodeThe node to be inserted
should_insertA closure that returns whether the node ought to be inserted at the current position. The closure function must unpack the closure parameters to a uel_llist_node_t **[2] and return a boolean.
-
-
- -
-
- -

◆ uel_llist_peek_head()

- -
-
- - - - - - - - -
uel_llist_node_t* uel_llist_peek_head (uel_llist_t * list)
-
- -

Peeks the element at the head of the list.

-
Parameters
- - -
listThe list from where the node will be peeked
-
-
-
Returns
node A pointer to the peeked node if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_llist_peek_tail()

- -
-
- - - - - - - - -
uel_llist_node_t* uel_llist_peek_tail (uel_llist_t * list)
-
- -

Peeks the element at the tail of the list.

-
Parameters
- - -
listThe list from where the node will be peeked
-
-
-
Returns
node A pointer to the peeked node if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_llist_pop_head()

- -
-
- - - - - - - - -
uel_llist_node_t* uel_llist_pop_head (uel_llist_t * list)
-
- -

Pops a node from the head of the list.

-
Parameters
- - -
listThe list from where the node will be popped
-
-
-
Returns
node A pointer to the popped node if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_llist_pop_tail()

- -
-
- - - - - - - - -
uel_llist_node_t* uel_llist_pop_tail (uel_llist_t * list)
-
- -

Pops a node from the tail of the list.

-
Parameters
- - -
listThe list from where the node will be popped
-
-
-
Returns
node A pointer to the popped node if it exists. Otherwise, NULL.
- -
-
- -

◆ uel_llist_push_head()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_llist_push_head (uel_llist_t * list,
uel_llist_node_t * node 
)
-
- -

Pushes a node to the head of the list.

-
Parameters
- - - -
listThe list into which to insert the node
nodeThe node to be inserted.
-
-
- -
-
- -

◆ uel_llist_push_tail()

- -
-
- - - - - - - - - - - - - - - - - - -
void uel_llist_push_tail (uel_llist_t * list,
uel_llist_node_t * node 
)
-
- -

Pushes a node to the tail of the list.

-
Parameters
- - - -
listThe list into which to insert the node
nodeThe node to be inserted.
-
-
- -
-
- -

◆ uel_llist_remove()

- -
-
- - - - - - - - - - - - - - - - - - -
bool uel_llist_remove (uel_llist_t * list,
uel_llist_node_t * node 
)
-
- -

Removes a node from the queue.

-
Parameters
- - - -
listThe list from where the node will be removed
nodeAddress of the node being removed
-
-
-
Returns
Whether the node was found and removed
- -
-
- -

◆ uel_llist_remove_while()

- -
-
- - - - - - - - - - - - - - - - - - -
uel_llist_t uel_llist_remove_while (uel_llist_t * list,
uel_closure_t * should_remove 
)
-
- -

Splits a list in two. The rupture point is determined by the supplied closure.

-

This function iterates the linked list invoking the provided closure for each node in it. While the closure returns true, nodes are popped from the list.

-
Parameters
- - - -
listThe list from where to pop nodes
should_removeA closure that will be invoked taking each node as parameter. The closure should return a boolean indicating whether the node should be removed or not.
-
-
-
Returns
A new list containing the removed nodes, in their original order.
- -
-
-
- - - - diff --git a/docs/html/linked-list_8h__dep__incl.map b/docs/html/linked-list_8h__dep__incl.map deleted file mode 100644 index a2880b2..0000000 --- a/docs/html/linked-list_8h__dep__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/html/linked-list_8h__dep__incl.md5 b/docs/html/linked-list_8h__dep__incl.md5 deleted file mode 100644 index 5ce843b..0000000 --- a/docs/html/linked-list_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -f1d246f913f5566cd4f095d688e50341 \ No newline at end of file diff --git a/docs/html/linked-list_8h__dep__incl.png b/docs/html/linked-list_8h__dep__incl.png deleted file mode 100644 index 601e777f50893cee5b638e44004eb2f5fe9861cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53704 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

UoNxO(jbW$CIFWKm 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 diff --git a/docs/html/linked-list_8h__incl.map b/docs/html/linked-list_8h__incl.map deleted file mode 100644 index 7c882b7..0000000 --- a/docs/html/linked-list_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/linked-list_8h__incl.md5 b/docs/html/linked-list_8h__incl.md5 deleted file mode 100644 index 05047fc..0000000 --- a/docs/html/linked-list_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1a1bdd1d4007500996ee0b05309c73dd \ No newline at end of file diff --git a/docs/html/linked-list_8h__incl.png b/docs/html/linked-list_8h__incl.png deleted file mode 100644 index 217776004152dc84c14dc519992b859d40646c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4844 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 pBIN&XGRcB5RaM-R)0#$JS6h42MwpBmf!9~iV - - - - - - -µEvLoop: include/uevloop/utils/linked-list.h Source File - - - - - - - - - -

-
- - - - - - -
-
µEvLoop -
-
A fast and lightweight event loop aimed at embedded platforms in C99.
-
-
- - - - - - - - -
-
- - -
- -
- - -
-
-
-
linked-list.h
-
-
-Go to the documentation of this file.
1 
-
6 #ifndef UEL_LINKED_LIST_H
-
7 #define UEL_LINKED_LIST_H
-
8 
-
10 #include <stdint.h>
-
11 #include <stdbool.h>
-
13 
-
14 #include "uevloop/utils/closure.h"
-
15 
-
17 typedef struct uel_llist_node uel_llist_node_t;
- -
20  void *value;
-
22  uel_llist_node_t *next;
-
23 };
-
24 
-
28 typedef struct uel_llist uel_llist_t;
-
29 struct uel_llist{
-
31  uel_llist_node_t *head;
-
33  uel_llist_node_t *tail;
-
35  uintptr_t count;
-
36 };
-
37 
-
42 void uel_llist_init(uel_llist_t *list);
-
43 
-
49 void uel_llist_push_head(uel_llist_t *list, uel_llist_node_t *node);
-
50 
-
56 void uel_llist_push_tail(uel_llist_t *list, uel_llist_node_t *node);
-
57 
-
63 uel_llist_node_t *uel_llist_pop_head(uel_llist_t *list);
-
64 
-
70 uel_llist_node_t *uel_llist_pop_tail(uel_llist_t *list);
-
71 
-
77 uel_llist_node_t *uel_llist_peek_head(uel_llist_t *list);
-
78 
-
84 uel_llist_node_t *uel_llist_peek_tail(uel_llist_t *list);
-
85 
-
92 bool uel_llist_remove(uel_llist_t *list, uel_llist_node_t *node);
-
93 
-
106 uel_llist_t uel_llist_remove_while(uel_llist_t *list, uel_closure_t *should_remove);
-
107 
-
123 void uel_llist_insert_at(uel_llist_t *list, uel_llist_node_t *node, uel_closure_t *should_insert);
-
124 
-
125 #endif /* UEL_LINKED_LIST_H */
-
-
uel_llist_node_t * uel_llist_pop_head(uel_llist_t *list)
Pops a node from the head of the list.
-
bool uel_llist_remove(uel_llist_t *list, uel_llist_node_t *node)
Removes a node from the queue.
-
void uel_llist_push_tail(uel_llist_t *list, uel_llist_node_t *node)
Pushes a node to the tail of the list.
-
uel_llist_node_t * next
The next node in the list.
Definition: linked-list.h:22
-
uel_llist_node_t * tail
A pointer to the tail of the list. Is NULL when the list is empty.
Definition: linked-list.h:33
-
Defines closures, objects that bind functions to creating and calling contexts.
-
uel_llist_t uel_llist_remove_while(uel_llist_t *list, uel_closure_t *should_remove)
Splits a list in two. The rupture point is determined by the supplied closure.
-
uel_llist_node_t * uel_llist_peek_head(uel_llist_t *list)
Peeks the element at the head of the list.
-
uel_llist_node_t * head
A pointer to the head of the list. Is NULL when the list is empty.
Definition: linked-list.h:31
-
uel_llist_node_t * uel_llist_pop_tail(uel_llist_t *list)
Pops a node from the tail of the list.
-
void uel_llist_insert_at(uel_llist_t *list, uel_llist_node_t *node, uel_closure_t *should_insert)
Scans a list until it finds a suitable spot to insert the provided node.
-
void * value
The value of the node, as a void pointer.
Definition: linked-list.h:20
-
void uel_llist_init(uel_llist_t *list)
Initialised a linked list.
-
uel_llist_node_t * uel_llist_peek_tail(uel_llist_t *list)
Peeks the element at the tail of the list.
-
Defines a linked list. If it is empty, head == tail == NULL. Pushing or popping from both the head or...
Definition: linked-list.h:29
-
void uel_llist_push_head(uel_llist_t *list, uel_llist_node_t *node)
Pushes a node to the head of the list.
-
uintptr_t count
The count of enqueued nodes.
Definition: linked-list.h:35
-
Defines a node of the linked list. Holds a void pointer.
Definition: linked-list.h:18
- - - - diff --git a/docs/html/menu.js b/docs/html/menu.js deleted file mode 100644 index 433c15b..0000000 --- a/docs/html/menu.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { - function makeTree(data,relPath) { - var result=''; - if ('children' in data) { - result+=''; - } - return result; - } - - $('#main-nav').append(makeTree(menudata,relPath)); - $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); - if (searchEnabled) { - if (serverSide) { - $('#main-menu').append('
  • '); - } else { - $('#main-menu').append('
  • '); - } - } - $('#main-menu').smartmenus(); -} -/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js deleted file mode 100644 index 5d6348f..0000000 --- a/docs/html/menudata.js +++ /dev/null @@ -1,81 +0,0 @@ -/* -@licstart The following is the entire license notice for the -JavaScript code in this file. - -Copyright (C) 1997-2019 by Dimitri van Heesch - -This program is free software; you can redistribute it and/or modify -it under the terms of version 2 of the GNU General Public License as published by -the Free Software Foundation - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -@licend The above is the entire license notice -for the JavaScript code in this file -*/ -var menudata={children:[ -{text:"Main Page",url:"index.html"}, -{text:"Data Structures",url:"annotated.html",children:[ -{text:"Data Structures",url:"annotated.html"}, -{text:"Data Structure Index",url:"classes.html"}, -{text:"Data Fields",url:"functions.html",children:[ -{text:"All",url:"functions.html",children:[ -{text:"a",url:"functions.html#index_a"}, -{text:"b",url:"functions.html#index_b"}, -{text:"c",url:"functions.html#index_c"}, -{text:"d",url:"functions.html#index_d"}, -{text:"e",url:"functions.html#index_e"}, -{text:"f",url:"functions.html#index_f"}, -{text:"h",url:"functions.html#index_h"}, -{text:"i",url:"functions.html#index_i"}, -{text:"l",url:"functions.html#index_l"}, -{text:"m",url:"functions.html#index_m"}, -{text:"n",url:"functions.html#index_n"}, -{text:"o",url:"functions.html#index_o"}, -{text:"p",url:"functions.html#index_p"}, -{text:"q",url:"functions.html#index_q"}, -{text:"r",url:"functions.html#index_r"}, -{text:"s",url:"functions.html#index_s"}, -{text:"t",url:"functions.html#index_t"}, -{text:"u",url:"functions.html#index_u"}, -{text:"v",url:"functions.html#index_v"}, -{text:"w",url:"functions.html#index_w"}]}, -{text:"Variables",url:"functions_vars.html",children:[ -{text:"a",url:"functions_vars.html#index_a"}, -{text:"b",url:"functions_vars.html#index_b"}, -{text:"c",url:"functions_vars.html#index_c"}, -{text:"d",url:"functions_vars.html#index_d"}, -{text:"e",url:"functions_vars.html#index_e"}, -{text:"f",url:"functions_vars.html#index_f"}, -{text:"h",url:"functions_vars.html#index_h"}, -{text:"i",url:"functions_vars.html#index_i"}, -{text:"l",url:"functions_vars.html#index_l"}, -{text:"m",url:"functions_vars.html#index_m"}, -{text:"n",url:"functions_vars.html#index_n"}, -{text:"o",url:"functions_vars.html#index_o"}, -{text:"p",url:"functions_vars.html#index_p"}, -{text:"q",url:"functions_vars.html#index_q"}, -{text:"r",url:"functions_vars.html#index_r"}, -{text:"s",url:"functions_vars.html#index_s"}, -{text:"t",url:"functions_vars.html#index_t"}, -{text:"u",url:"functions_vars.html#index_u"}, -{text:"v",url:"functions_vars.html#index_v"}, -{text:"w",url:"functions_vars.html#index_w"}]}]}]}, -{text:"Files",url:"files.html",children:[ -{text:"File List",url:"files.html"}, -{text:"Globals",url:"globals.html",children:[ -{text:"All",url:"globals.html",children:[ -{text:"u",url:"globals.html#index_u"}]}, -{text:"Functions",url:"globals_func.html",children:[ -{text:"u",url:"globals_func.html#index_u"}]}, -{text:"Typedefs",url:"globals_type.html"}, -{text:"Enumerations",url:"globals_enum.html"}, -{text:"Enumerator",url:"globals_eval.html"}, -{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/docs/html/module_8h.html b/docs/html/module_8h.html deleted file mode 100644 index ea4855a..0000000 --- a/docs/html/module_8h.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/module.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    module.h File Reference
    -
    -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_module_t
     A module is an isolated unit of behaviour with lifecycle hooks. More...
     
    - - - - -

    -Typedefs

    -typedef void(* uel_module_hook_t) (struct uel_module *)
     Defines a module hook to be called during the module lifecycle.
     
    - - - - - - - - - - -

    -Functions

    void uel_module_init (uel_module_t *module, uel_module_hook_t config, uel_module_hook_t launch, struct uel_application *app)
     Initialised a module. More...
     
    void uel_module_config (uel_module_t *module)
     Calls the configuration hook of a module. More...
     
    void uel_module_launch (uel_module_t *module)
     Calls the launch hook of a module. More...
     
    -

    Detailed Description

    -

    Defines modules, isolated units of behaviour with lifecycle hooks.

    -

    Function Documentation

    - -

    ◆ uel_module_config()

    - -
    -
    - - - - - - - - -
    void uel_module_config (uel_module_t * module)
    -
    - -

    Calls the configuration hook of a module.

    -
    Parameters
    - - -
    moduleThe modules to config
    -
    -
    - -
    -
    - -

    ◆ uel_module_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_module_init (uel_module_t * module,
    uel_module_hook_t config,
    uel_module_hook_t launch,
    struct uel_applicationapp 
    )
    -
    - -

    Initialised a module.

    -
    Parameters
    - - - - - -
    moduleThe module to be initialised
    configA module hook to be invoked during the configuration phase
    launchA module hook to be invoked during the launching phase
    appThe application instante onto which this module will be loaded
    -
    -
    - -
    -
    - -

    ◆ uel_module_launch()

    - -
    -
    - - - - - - - - -
    void uel_module_launch (uel_module_t * module)
    -
    - -

    Calls the launch hook of a module.

    -
    Parameters
    - - -
    moduleThe modules to launch
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/module_8h__dep__incl.map b/docs/html/module_8h__dep__incl.map deleted file mode 100644 index e17cb17..0000000 --- a/docs/html/module_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/module_8h__dep__incl.md5 b/docs/html/module_8h__dep__incl.md5 deleted file mode 100644 index 0966591..0000000 --- a/docs/html/module_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -af60f43600ef0d7d39b399ddf1ff0d54 \ No newline at end of file diff --git a/docs/html/module_8h__dep__incl.png b/docs/html/module_8h__dep__incl.png deleted file mode 100644 index 5b404f55aadda6e774fa040d7afe94a60b5ced8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5493 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 diff --git a/docs/html/module_8h_source.html b/docs/html/module_8h_source.html deleted file mode 100644 index cdbada0..0000000 --- a/docs/html/module_8h_source.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/module.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    module.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    4 #ifndef UEL_MODULE_H
    -
    5 #define UEL_MODULE_H
    -
    6 
    -
    7 struct uel_application;
    -
    8 struct uel_module;
    -
    9 
    -
    12 typedef void (*uel_module_hook_t)(struct uel_module *);
    -
    13 
    -
    26 typedef struct uel_module uel_module_t;
    -
    27 struct uel_module {
    - - - -
    40 };
    -
    41 
    -
    49 void uel_module_init(
    -
    50  uel_module_t *module,
    -
    51  uel_module_hook_t config,
    -
    52  uel_module_hook_t launch,
    -
    53  struct uel_application *app
    -
    54 );
    -
    55 
    -
    60 void uel_module_config(uel_module_t *module);
    -
    61 
    -
    66 void uel_module_launch(uel_module_t *module);
    -
    67 
    -
    68 #endif /* end of include guard: UEL_MODULE_H */
    -
    -
    void(* uel_module_hook_t)(struct uel_module *)
    Defines a module hook to be called during the module lifecycle.
    Definition: module.h:12
    -
    void uel_module_config(uel_module_t *module)
    Calls the configuration hook of a module.
    -
    uel_module_hook_t launch
    Definition: module.h:37
    -
    uel_module_hook_t config
    Definition: module.h:32
    -
    void uel_module_launch(uel_module_t *module)
    Calls the launch hook of a module.
    -
    A module is an isolated unit of behaviour with lifecycle hooks.
    Definition: module.h:27
    -
    void uel_module_init(uel_module_t *module, uel_module_hook_t config, uel_module_hook_t launch, struct uel_application *app)
    Initialised a module.
    -
    Top-level container for µEvLoop'd application.
    Definition: application.h:39
    -
    struct uel_application * app
    Keeps a reference to the application onto which the module is loaded.
    Definition: module.h:39
    - - - - diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png deleted file mode 100644 index 72a58a529ed3a9ed6aa0c51a79cf207e026deee2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png deleted file mode 100644 index 2093a237a94f6c83e19ec6e5fd42f7ddabdafa81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL - - - - - - -µEvLoop: include/uevloop/utils/object-pool.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    object-pool.h File Reference
    -
    -
    - -

    Defines object pools, arrays of pre-allocated objects for dynamic use. -More...

    -
    -Include dependency graph for object-pool.h:
    -
    -
    - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_objpool_t
     Pre-allocated memory bound to speciffic types suitable for providing dynamic object management in the stack. More...
     
    - - - - - - - - - - - - - -

    -Macros

    #define UEL_DECLARE_OBJPOOL_BUFFERS(type, size_log2n, id)
     Declares the necessary buffers to back an object pool, so the programmer doesn't have to reason much about it. More...
     
    #define UEL_OBJPOOL_BUFFERS(id)   (uint8_t *)&id##_pool_buffer, id##_pool_queue_buffer
     Refers to a previously declared buffer set. More...
     
    #define UEL_OBJPOOL_BUFFERS_IN(id, obj)   (uint8_t *)&obj.id##_pool_buffer, obj.id##_pool_queue_buffer
     Refers to a previously declared buffer set. More...
     
    #define UEL_OBJPOOL_BUFFERS_AT(id, obj)   (uint8_t *)&obj->id##_pool_buffer, obj->id##_pool_queue_buffer
     Refers to a previously declared buffer set. More...
     
    - - - - - - - - - - - - - -

    -Functions

    void uel_objpool_init (uel_objpool_t *pool, size_t size_log2n, size_t item_size, uint8_t *buffer, void **queue_buffer)
     Initialises an object pool. More...
     
    void * uel_objpool_acquire (uel_objpool_t *pool)
     Acquires an object from the pool. More...
     
    bool uel_objpool_release (uel_objpool_t *pool, void *element)
     Releases an object to the pool. More...
     
    bool uel_objpool_is_empty (uel_objpool_t *pool)
     Checks if a pool is depleted. More...
     
    -

    Detailed Description

    -

    Defines object pools, arrays of pre-allocated objects for dynamic use.

    -

    Macro Definition Documentation

    - -

    ◆ UEL_DECLARE_OBJPOOL_BUFFERS

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    #define UEL_DECLARE_OBJPOOL_BUFFERS( type,
     size_log2n,
     id 
    )
    -
    -Value:
    type id##_pool_buffer[(1<<size_log2n)]; \
    -
    void *id##_pool_queue_buffer[1<<size_log2n]
    -
    -

    Declares the necessary buffers to back an object pool, so the programmer doesn't have to reason much about it.

    -

    Use this macro as a shortcut to create the required buffers for an object pool. This will declare two buffers in the calling scope.

    -
    Parameters
    - - - - -
    typeThe type of the objects the pool will contain
    size_log2nThe number of elements the pool will contain in log2 form
    idA valid identifier for the pools.
    -
    -
    - -
    -
    - -

    ◆ UEL_OBJPOOL_BUFFERS

    - -
    -
    - - - - - - - - -
    #define UEL_OBJPOOL_BUFFERS( id)   (uint8_t *)&id##_pool_buffer, id##_pool_queue_buffer
    -
    - -

    Refers to a previously declared buffer set.

    -

    This is a convenience macro to supply the buffers generated by UEL_DECLARE_OBJPOOL_BUFFERS to the uel_objpool_init function.

    -
    Parameters
    - - -
    idThe identifier used to declare the pool buffers
    -
    -
    - -
    -
    - -

    ◆ UEL_OBJPOOL_BUFFERS_AT

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define UEL_OBJPOOL_BUFFERS_AT( id,
     obj 
    )   (uint8_t *)&obj->id##_pool_buffer, obj->id##_pool_queue_buffer
    -
    - -

    Refers to a previously declared buffer set.

    -

    This is a convenience macro to supply the buffers generated by UEL_DECLARE_OBJPOOL_BUFFERS to the uel_objpool_init function. Use this if the buffers were defined inside an object whose address is accessible in the current scope

    -
    Parameters
    - - - -
    idThe identifier used to declare the pool buffers
    objThe address of the object storing the pool buffers
    -
    -
    - -
    -
    - -

    ◆ UEL_OBJPOOL_BUFFERS_IN

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define UEL_OBJPOOL_BUFFERS_IN( id,
     obj 
    )   (uint8_t *)&obj.id##_pool_buffer, obj.id##_pool_queue_buffer
    -
    - -

    Refers to a previously declared buffer set.

    -

    This is a convenience macro to supply the buffers generated by UEL_DECLARE_OBJPOOL_BUFFERS to the uel_objpool_init function. Use this if the buffers were defined inside a local object, accessible in the current scope.

    -
    Parameters
    - - - -
    idThe identifier used to declare the pool buffers
    objThe object storing the pool buffers
    -
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ uel_objpool_acquire()

    - -
    -
    - - - - - - - - -
    void* uel_objpool_acquire (uel_objpool_t * pool)
    -
    - -

    Acquires an object from the pool.

    -
    Parameters
    - - -
    poolThe pool from where to acquire the object
    -
    -
    -
    Returns
    A pointer to the acquired object or NULL if the pool is depleted
    - -
    -
    - -

    ◆ uel_objpool_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_objpool_init (uel_objpool_t * pool,
    size_t size_log2n,
    size_t item_size,
    uint8_t * buffer,
    void ** queue_buffer 
    )
    -
    - -

    Initialises an object pool.

    -
    Parameters
    - - - - - - -
    poolThe pool to be initialised
    size_log2nThe number of objects in the pool in its log2 form
    item_sizeThe size of each object in the pool. If special alignment is required, it must be included in this value.
    bufferThe buffer that contains each object in the pool. Must be 2**size_log2n * item_size long.
    queue_bufferA void pointer array that will be used as the buffer to the object pointer queue. Must be 2**size_log2n long.
    -
    -
    - -
    -
    - -

    ◆ uel_objpool_is_empty()

    - -
    -
    - - - - - - - - -
    bool uel_objpool_is_empty (uel_objpool_t * pool)
    -
    - -

    Checks if a pool is depleted.

    -
    Parameters
    - - -
    poolThe pool to be verified
    -
    -
    -
    Returns
    Whether the pool is empty (i.e.: All addresses have been given out)
    - -
    -
    - -

    ◆ uel_objpool_release()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool uel_objpool_release (uel_objpool_t * pool,
    void * element 
    )
    -
    - -

    Releases an object to the pool.

    -
    Parameters
    - - - -
    poolThe pool where the object will be released to
    elementThe element to be returned to the pool
    -
    -
    -
    Returns
    Whether the object could be released
    - -
    -
    -
    - - - - diff --git a/docs/html/object-pool_8h__dep__incl.map b/docs/html/object-pool_8h__dep__incl.map deleted file mode 100644 index 71ba2ac..0000000 --- a/docs/html/object-pool_8h__dep__incl.map +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/docs/html/object-pool_8h__dep__incl.md5 b/docs/html/object-pool_8h__dep__incl.md5 deleted file mode 100644 index 9aad823..0000000 --- a/docs/html/object-pool_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -50ceb4f6751a9a62ae0e924b409f0aac \ No newline at end of file diff --git a/docs/html/object-pool_8h__dep__incl.png b/docs/html/object-pool_8h__dep__incl.png deleted file mode 100644 index ac9eb2a551162aa851e03575d540e8a2288e1f23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26396 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 - - - diff --git a/docs/html/object-pool_8h__incl.md5 b/docs/html/object-pool_8h__incl.md5 deleted file mode 100644 index d305a86..0000000 --- a/docs/html/object-pool_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -03d2009b46606b7f38a9e77f8bcb4b7e \ No newline at end of file diff --git a/docs/html/object-pool_8h__incl.png b/docs/html/object-pool_8h__incl.png deleted file mode 100644 index dee660e663d4a16a570a8ab64f0b309c431295e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4808 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 OAU$m(tx64tu>SxRcAaPd diff --git a/docs/html/object-pool_8h_source.html b/docs/html/object-pool_8h_source.html deleted file mode 100644 index eacec63..0000000 --- a/docs/html/object-pool_8h_source.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/object-pool.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    object-pool.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    6 #ifndef UEL_OBJECT_POOL_H
    -
    7 #define UEL_OBJECT_POOL_H
    -
    8 
    - -
    10 
    -
    12 #include <stdint.h>
    -
    13 #include <stdlib.h>
    -
    15 
    -
    26 typedef struct uel_objpool uel_objpool_t;
    -
    27 struct uel_objpool {
    -
    29  uint8_t *buffer;
    -
    31  uel_cqueue_t queue;
    -
    32 };
    -
    33 
    -
    45 void uel_objpool_init(
    -
    46  uel_objpool_t *pool,
    -
    47  size_t size_log2n,
    -
    48  size_t item_size,
    -
    49  uint8_t *buffer,
    -
    50  void **queue_buffer
    -
    51 );
    -
    52 
    -
    58 void *uel_objpool_acquire(uel_objpool_t *pool);
    -
    59 
    -
    66 bool uel_objpool_release(uel_objpool_t *pool, void *element);
    -
    67 
    -
    73 bool uel_objpool_is_empty(uel_objpool_t *pool);
    -
    74 
    -
    85 #define UEL_DECLARE_OBJPOOL_BUFFERS(type, size_log2n, id) \
    -
    86  type id##_pool_buffer[(1<<size_log2n)]; \
    -
    87  void *id##_pool_queue_buffer[1<<size_log2n]
    -
    88 
    -
    96 #define UEL_OBJPOOL_BUFFERS(id) \
    -
    97  (uint8_t *)&id##_pool_buffer, id##_pool_queue_buffer
    -
    98 
    -
    109 #define UEL_OBJPOOL_BUFFERS_IN(id, obj) \
    -
    110  (uint8_t *)&obj.id##_pool_buffer, obj.id##_pool_queue_buffer
    -
    111 
    -
    122 #define UEL_OBJPOOL_BUFFERS_AT(id, obj) \
    -
    123  (uint8_t *)&obj->id##_pool_buffer, obj->id##_pool_queue_buffer
    -
    124 
    -
    125 #endif /* UEL_OBJECT_POOL_H */
    -
    -
    bool uel_objpool_is_empty(uel_objpool_t *pool)
    Checks if a pool is depleted.
    -
    uint8_t * buffer
    The buffer that contains each object managed by this pool.
    Definition: object-pool.h:29
    -
    void * uel_objpool_acquire(uel_objpool_t *pool)
    Acquires an object from the pool.
    -
    bool uel_objpool_release(uel_objpool_t *pool, void *element)
    Releases an object to the pool.
    -
    Defines circular queues, fast and efficient FIFO data structures.
    -
    uel_cqueue_t queue
    The queue containing the addresses for each object in the pool.
    Definition: object-pool.h:31
    -
    Pre-allocated memory bound to speciffic types suitable for providing dynamic object management in the...
    Definition: object-pool.h:27
    -
    void uel_objpool_init(uel_objpool_t *pool, size_t size_log2n, size_t item_size, uint8_t *buffer, void **queue_buffer)
    Initialises an object pool.
    - - - - diff --git a/docs/html/open.png b/docs/html/open.png deleted file mode 100644 index 30f75c7efe2dd0c9e956e35b69777a02751f048b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM - - - - - - -µEvLoop: include/uevloop/utils/pipeline.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    pipeline.h File Reference
    -
    -
    - -

    Defines pipelines, structures to hold many closures and functions to invoke them sequentially, composing their functionality. -More...

    -
    -Include dependency graph for pipeline.h:
    -
    -
    - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_pipeline_t
     A pipeline is an ordered closure list to be run in sequence. More...
     
    - - - - -

    -Macros

    #define UEL_PIPELINE_DECLARE(id, ...)
     Helper macro to create a pipeline and its required data structures. More...
     
    - - - - - - - -

    -Functions

    void uel_pipeline_init (uel_pipeline_t *pipeline, uel_closure_t *closures, size_t count)
     Initialises a new pipeline. More...
     
    void * uel_pipeline_apply (uel_pipeline_t *pipeline, void *params)
     Applies a pipeline to some input. More...
     
    -

    Detailed Description

    -

    Defines pipelines, structures to hold many closures and functions to invoke them sequentially, composing their functionality.

    -

    Macro Definition Documentation

    - -

    ◆ UEL_PIPELINE_DECLARE

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    #define UEL_PIPELINE_DECLARE( id,
     ... 
    )
    -
    -Value:
    uel_closure_t id##_pipeline_closures[] = {__VA_ARGS__}; \
    -
    uel_pipeline_t id##_pipeline; \
    -
    uel_pipeline_init(&id##_pipeline, id##_pipeline_closures, \
    -
    sizeof(id##_pipeline_closures) / sizeof(uel_closure_t));
    -
    -

    Helper macro to create a pipeline and its required data structures.

    -

    This macro, based on the input identifier, declares:

      -
    • a closure array with any supplied closures ([id]_pipeline_closures)
    • -
    • a pipeline object wrapping the closure array ([id]_pipeline)
    • -
    -
    Parameters
    - - - -
    idThe identifier on which to base declared variables' names.
    ...The closures to be pipelined.
    -
    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ uel_pipeline_apply()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void* uel_pipeline_apply (uel_pipeline_t * pipeline,
    void * params 
    )
    -
    - -

    Applies a pipeline to some input.

    -

    This function takes some input and passes it to the first closure in the pipeline. The value returned from this first closure will be passed to the second one and so on.

    -
    Parameters
    - - - -
    pipelineThe pipeline to be applied
    paramsThe initial parameters that will be passed to the first closure
    -
    -
    -
    Returns
    Whatever was returned by the last closure invoked
    - -
    -
    - -

    ◆ uel_pipeline_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_pipeline_init (uel_pipeline_t * pipeline,
    uel_closure_t * closures,
    size_t count 
    )
    -
    - -

    Initialises a new pipeline.

    -
    Parameters
    - - - - -
    pipelineThe pipeline to be initialised
    closuresThe closures that should be run in sequence, in an array.
    countThe number of closures to be piped.
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/pipeline_8h__dep__incl.map b/docs/html/pipeline_8h__dep__incl.map deleted file mode 100644 index 2332f3e..0000000 --- a/docs/html/pipeline_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/pipeline_8h__dep__incl.md5 b/docs/html/pipeline_8h__dep__incl.md5 deleted file mode 100644 index 5c827ec..0000000 --- a/docs/html/pipeline_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -1e9ecc8ead6b0a9d7bf07d131e1bc03b \ No newline at end of file diff --git a/docs/html/pipeline_8h__dep__incl.png b/docs/html/pipeline_8h__dep__incl.png deleted file mode 100644 index 925761093f0032c941fbcf9c01f46fb54e252d05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4737 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 BA%Xw^ diff --git a/docs/html/pipeline_8h__incl.map b/docs/html/pipeline_8h__incl.map deleted file mode 100644 index f234291..0000000 --- a/docs/html/pipeline_8h__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/pipeline_8h__incl.md5 b/docs/html/pipeline_8h__incl.md5 deleted file mode 100644 index 7e24513..0000000 --- a/docs/html/pipeline_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -9d213d876bc874a9add1787a88dde080 \ No newline at end of file diff --git a/docs/html/pipeline_8h__incl.png b/docs/html/pipeline_8h__incl.png deleted file mode 100644 index f2dde2726c70e2a1388a1e5f3015939ad277b593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4621 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 diff --git a/docs/html/pipeline_8h_source.html b/docs/html/pipeline_8h_source.html deleted file mode 100644 index 13598c7..0000000 --- a/docs/html/pipeline_8h_source.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/pipeline.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    pipeline.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    7 #ifndef UEL_PIPELINE_H
    -
    8 #define UEL_PIPELINE_H
    -
    9 
    -
    11 #include <stdlib.h>
    -
    13 
    -
    14 #include "uevloop/utils/closure.h"
    -
    15 
    -
    22 typedef struct uel_pipeline uel_pipeline_t;
    -
    23 struct uel_pipeline{
    -
    25  uel_closure_t *closures;
    -
    27  size_t count;
    -
    28 };
    -
    29 
    -
    36 void uel_pipeline_init(uel_pipeline_t *pipeline, uel_closure_t *closures, size_t count);
    -
    37 
    -
    48 void *uel_pipeline_apply(uel_pipeline_t *pipeline, void *params);
    -
    49 
    -
    59 #define UEL_PIPELINE_DECLARE(id, ...) \
    -
    60  uel_closure_t id##_pipeline_closures[] = {__VA_ARGS__}; \
    -
    61  uel_pipeline_t id##_pipeline; \
    -
    62  uel_pipeline_init(&id##_pipeline, id##_pipeline_closures, \
    -
    63  sizeof(id##_pipeline_closures) / sizeof(uel_closure_t));
    -
    64 
    -
    65 #endif /* end of include guard: UEL_PIPELINE_H */
    -
    -
    A pipeline is an ordered closure list to be run in sequence.
    Definition: pipeline.h:23
    -
    Defines closures, objects that bind functions to creating and calling contexts.
    -
    size_t count
    The number of closures in the array.
    Definition: pipeline.h:27
    -
    void uel_pipeline_init(uel_pipeline_t *pipeline, uel_closure_t *closures, size_t count)
    Initialises a new pipeline.
    -
    uel_closure_t * closures
    A reference to an array of closures to be run.
    Definition: pipeline.h:25
    -
    void * uel_pipeline_apply(uel_pipeline_t *pipeline, void *params)
    Applies a pipeline to some input.
    - - - - diff --git a/docs/html/promise_8h.html b/docs/html/promise_8h.html deleted file mode 100644 index d1c41b8..0000000 --- a/docs/html/promise_8h.html +++ /dev/null @@ -1,675 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/promise.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    promise.h File Reference
    -
    -
    - -

    Contains definitions for promise stores, promises and functions to manipulate them. -More...

    -
    -Include dependency graph for promise.h:
    -
    -
    - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - - - - - - - -

    -Data Structures

    struct  uel_promise_segment_t
     Defines a single synchronous operation to be invoked when the promise is either resolved or rejected. More...
     
    struct  uel_promise_t
     A promise is association of an asynchronous operation to the possible execution paths that follow its resolution. It is also a holder for the value it was settled with. More...
     
    struct  uel_promise_store_t
     An issuer of promises. Contains references to pools for promises and segments. More...
     
    - - - - -

    -Typedefs

    -typedef enum uel_promise_state uel_promise_state_t
     Alias to the uel_promise_state enum.
     
    - - - - -

    -Enumerations

    enum  uel_promise_state { UEL_PROMISE_PENDING, -UEL_PROMISE_RESOLVED, -UEL_PROMISE_REJECTED - }
     Defines the possible states for a prommise. More...
     
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    uel_promise_store_t uel_promise_store_create (uel_objpool_t *promise_pool, uel_objpool_t *segment_pool)
     Creates a new promise store from the promise and segment pools. More...
     
    uel_promise_t * uel_promise_create (uel_promise_store_t *store, uel_closure_t closure)
     Acquires a new promise from the supplied store and binds it to the asynchronous operation started by the supplied closure. The closure is invoked immediately. More...
     
    void uel_promise_destroy (uel_promise_t *promise)
     Destroys a promise and all of its segments. Settling this promise afterwards yields undefined behaviour. More...
     
    void uel_promise_then (uel_promise_t *promise, uel_closure_t resolve)
     Adds a new synchronous segment to the promise. It will be invoked upon promise resolution. In case of rejection, this segment will be ignored. More...
     
    void uel_promise_catch (uel_promise_t *promise, uel_closure_t reject)
     Adds a new synchronous segment to the promise. It will be invoked upon promise rejection. In case of resolution, this segment will be ignored. More...
     
    void uel_promise_always (uel_promise_t *promise, uel_closure_t always)
     Adds a new synchronous segment to the promise. The same closure will be invoked on promise settling regardless of the settled state. More...
     
    void uel_promise_after (uel_promise_t *promise, uel_closure_t resolve, uel_closure_t reject)
     Adds a new synchronous segment to the promise. Either of its closures will be invoked, depending on the settled state of the promise. More...
     
    void uel_promise_resolve (uel_promise_t *promise, void *value)
     Settles a promise as resolved and, synchronously, invokes the resolve closures of each segment in the order they were registered. More...
     
    void uel_promise_reject (uel_promise_t *promise, void *value)
     Settles a promise as rejected and, synchronously, invokes the reject closures of each segment in the order they were registered. More...
     
    void uel_promise_resettle (uel_promise_t *promise, uel_promise_state_t state, void *value)
     Resettles a promise as the supplied state. Unlike uel_promise_resolve() and uel_promise_reject(), does not invoke the synchronous segments. More...
     
    uel_closure_t uel_promise_resolver (uel_promise_t *promise)
     Creates a closure bound to a promise. When the closure is invoked with some parameter, the promise is resolved with this parameter as value. More...
     
    uel_closure_t uel_promise_rejecter (uel_promise_t *promise)
     Creates a closure bound to a promise. When the closure is invoked with some parameter, the promise is rejected with this parameter as error. More...
     
    uel_closure_t uel_promise_destroyer (uel_promise_t *promise)
     Creates a closure bound to a promise. When the closure is invoked, the promise is destroyed. Any parameters passed to the closure are ignored. More...
     
    -

    Detailed Description

    -

    Contains definitions for promise stores, promises and functions to manipulate them.

    -

    Promises are structures that associate asynchronous operations to synchronous processing of the values produces by them, allowing async data pipelines to be built.

    -

    Enumeration Type Documentation

    - -

    ◆ uel_promise_state

    - -
    -
    - - - - -
    enum uel_promise_state
    -
    - -

    Defines the possible states for a prommise.

    - - - - -
    Enumerator
    UEL_PROMISE_PENDING 

    A promise that has not been resolved nor rejected.

    -
    UEL_PROMISE_RESOLVED 

    A promise that has been resolved with some value.

    -
    UEL_PROMISE_REJECTED 

    A promise that has been rejected with some error.

    -
    - -
    -
    -

    Function Documentation

    - -

    ◆ uel_promise_after()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_promise_after (uel_promise_t * promise,
    uel_closure_t resolve,
    uel_closure_t reject 
    )
    -
    - -

    Adds a new synchronous segment to the promise. Either of its closures will be invoked, depending on the settled state of the promise.

    -
    Parameters
    - - - - -
    promiseThe promise to attach the segment to
    resolveThe closure to be invoked when the promise is resolved
    rejectThe closure to be invoked when the promise is rejected
    -
    -
    - -
    -
    - -

    ◆ uel_promise_always()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_promise_always (uel_promise_t * promise,
    uel_closure_t always 
    )
    -
    - -

    Adds a new synchronous segment to the promise. The same closure will be invoked on promise settling regardless of the settled state.

    -
    Parameters
    - - - -
    promiseThe promise to attach the segment to
    alwaysThe closure to be invoked when the promise is settled
    -
    -
    - -
    -
    - -

    ◆ uel_promise_catch()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_promise_catch (uel_promise_t * promise,
    uel_closure_t reject 
    )
    -
    - -

    Adds a new synchronous segment to the promise. It will be invoked upon promise rejection. In case of resolution, this segment will be ignored.

    -
    Parameters
    - - - -
    promiseThe promise to attach the segment to
    rejectThe closure to be invoked when the promise is rejected
    -
    -
    - -
    -
    - -

    ◆ uel_promise_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uel_promise_t* uel_promise_create (uel_promise_store_t * store,
    uel_closure_t closure 
    )
    -
    - -

    Acquires a new promise from the supplied store and binds it to the asynchronous operation started by the supplied closure. The closure is invoked immediately.

    -
    Parameters
    - - - -
    storeThe store from where to acquire promises and segments
    closureThe closure that initiates the asynchronous operation
    -
    -
    -
    Returns
    A pointer to the promise
    - -
    -
    - -

    ◆ uel_promise_destroy()

    - -
    -
    - - - - - - - - -
    void uel_promise_destroy (uel_promise_t * promise)
    -
    - -

    Destroys a promise and all of its segments. Settling this promise afterwards yields undefined behaviour.

    -
    Parameters
    - - -
    promiseThe promise to be destroyed
    -
    -
    - -
    -
    - -

    ◆ uel_promise_destroyer()

    - -
    -
    - - - - - - - - -
    uel_closure_t uel_promise_destroyer (uel_promise_t * promise)
    -
    - -

    Creates a closure bound to a promise. When the closure is invoked, the promise is destroyed. Any parameters passed to the closure are ignored.

    -
    Parameters
    - - -
    promiseThe promise to be destroyed
    -
    -
    -
    Returns
    A closure that destroyes the promise when invoked
    - -
    -
    - -

    ◆ uel_promise_reject()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_promise_reject (uel_promise_t * promise,
    void * value 
    )
    -
    - -

    Settles a promise as rejected and, synchronously, invokes the reject closures of each segment in the order they were registered.

    -

    If a segment returns a non-NULL pointer, it is cast to a promise pointer and the original promise awaits until the returned promise is settled.

    -
    Parameters
    - - - -
    promiseThe promise to be rejected
    valueThe value to reject the promise with
    -
    -
    - -
    -
    - -

    ◆ uel_promise_rejecter()

    - -
    -
    - - - - - - - - -
    uel_closure_t uel_promise_rejecter (uel_promise_t * promise)
    -
    - -

    Creates a closure bound to a promise. When the closure is invoked with some parameter, the promise is rejected with this parameter as error.

    -
    Parameters
    - - -
    promiseThe promise to be rejected
    -
    -
    -
    Returns
    A closure that resolves the promise when invoked
    - -
    -
    - -

    ◆ uel_promise_resettle()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_promise_resettle (uel_promise_t * promise,
    uel_promise_state_t state,
    void * value 
    )
    -
    - -

    Resettles a promise as the supplied state. Unlike uel_promise_resolve() and uel_promise_reject(), does not invoke the synchronous segments.

    -

    This function should be used to switch execution paths during synchronous processing of segments as to signal that an error was raised or rescued by a particular segment. If the promise is settled as pending, the synchronous processing phase is interrupted.

    -
    Parameters
    - - - - -
    promiseThe promise to be resettled
    stateThe new promise state
    valueThe new promise value
    -
    -
    - -
    -
    - -

    ◆ uel_promise_resolve()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_promise_resolve (uel_promise_t * promise,
    void * value 
    )
    -
    - -

    Settles a promise as resolved and, synchronously, invokes the resolve closures of each segment in the order they were registered.

    -

    If a segment returns a non-NULL pointer, it is cast to a promise pointer and the original promise awaits until the returned promise is settled.

    -
    Parameters
    - - - -
    promiseThe promise to be resolved
    valueThe value to resolve the promise with
    -
    -
    - -
    -
    - -

    ◆ uel_promise_resolver()

    - -
    -
    - - - - - - - - -
    uel_closure_t uel_promise_resolver (uel_promise_t * promise)
    -
    - -

    Creates a closure bound to a promise. When the closure is invoked with some parameter, the promise is resolved with this parameter as value.

    -
    Parameters
    - - -
    promiseThe promise to be resolved
    -
    -
    -
    Returns
    A closure that resolves the promise when invoked
    - -
    -
    - -

    ◆ uel_promise_store_create()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    uel_promise_store_t uel_promise_store_create (uel_objpool_t * promise_pool,
    uel_objpool_t * segment_pool 
    )
    -
    - -

    Creates a new promise store from the promise and segment pools.

    -
    Parameters
    - - - -
    promise_poolThe uel_objpool_t that holds promises
    segment_poolThe uel_objpool_t that holds segments
    -
    -
    -
    Returns
    A new promise store bound to the object pools provided
    - -
    -
    - -

    ◆ uel_promise_then()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_promise_then (uel_promise_t * promise,
    uel_closure_t resolve 
    )
    -
    - -

    Adds a new synchronous segment to the promise. It will be invoked upon promise resolution. In case of rejection, this segment will be ignored.

    -
    Parameters
    - - - -
    promiseThe promise to attach the segment to
    resolveThe closure to be invoked when the promise is resolved
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/promise_8h__dep__incl.map b/docs/html/promise_8h__dep__incl.map deleted file mode 100644 index 87670cc..0000000 --- a/docs/html/promise_8h__dep__incl.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/promise_8h__dep__incl.md5 b/docs/html/promise_8h__dep__incl.md5 deleted file mode 100644 index dc5ebd4..0000000 --- a/docs/html/promise_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -83c72b3ad3daea9d190447292bb2c34d \ No newline at end of file diff --git a/docs/html/promise_8h__dep__incl.png b/docs/html/promise_8h__dep__incl.png deleted file mode 100644 index 6ea8a1120d88cbab2c9d666c27ffa758eab662ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9364 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 - - - - - - diff --git a/docs/html/promise_8h__incl.md5 b/docs/html/promise_8h__incl.md5 deleted file mode 100644 index 945a4a0..0000000 --- a/docs/html/promise_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -834f68ead18af34286a97a93509f6657 \ No newline at end of file diff --git a/docs/html/promise_8h__incl.png b/docs/html/promise_8h__incl.png deleted file mode 100644 index d6c0c9f66426e157f257540687695b765fa7b16d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12723 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 diff --git a/docs/html/promise_8h_source.html b/docs/html/promise_8h_source.html deleted file mode 100644 index 2e7b710..0000000 --- a/docs/html/promise_8h_source.html +++ /dev/null @@ -1,202 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/utils/promise.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    promise.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    10 #ifndef UEL_PROMISE_H
    -
    11 #define UEL_PROMISE_H
    -
    12 
    -
    13 #include "uevloop/config.h"
    -
    14 #include "uevloop/utils/closure.h"
    - -
    16 
    - - - - -
    23 };
    - -
    26 
    -
    40 typedef struct uel_promise_segment uel_promise_segment_t;
    - -
    43  uel_closure_t resolve;
    -
    45  uel_closure_t reject;
    -
    47  uel_promise_segment_t *next;
    -
    48 };
    -
    49 
    -
    51 struct uel_promise_store;
    -
    52 
    -
    72 typedef struct uel_promise uel_promise_t;
    -
    73 struct uel_promise {
    - - -
    79  void *value;
    -
    81  uel_promise_segment_t *first_segment;
    -
    83  uel_promise_segment_t *last_segment;
    -
    84 };
    -
    85 
    -
    89 typedef struct uel_promise_store uel_promise_store_t;
    - -
    92  uel_objpool_t *promise_pool;
    -
    94  uel_objpool_t *segment_pool;
    -
    95 };
    -
    96 
    -
    103 uel_promise_store_t uel_promise_store_create(
    -
    104  uel_objpool_t *promise_pool,
    -
    105  uel_objpool_t *segment_pool
    -
    106 );
    -
    107 
    -
    116 uel_promise_t *uel_promise_create(uel_promise_store_t *store, uel_closure_t closure);
    -
    117 
    -
    123 void uel_promise_destroy(uel_promise_t *promise);
    -
    124 
    -
    131 void uel_promise_then(uel_promise_t *promise, uel_closure_t resolve);
    -
    132 
    -
    139 void uel_promise_catch(uel_promise_t *promise, uel_closure_t reject);
    -
    140 
    -
    147 void uel_promise_always(uel_promise_t *promise, uel_closure_t always);
    -
    148 
    -
    156 void uel_promise_after(
    -
    157  uel_promise_t *promise,
    -
    158  uel_closure_t resolve,
    -
    159  uel_closure_t reject
    -
    160 );
    -
    161 
    -
    171 void uel_promise_resolve(uel_promise_t *promise, void *value);
    -
    172 
    -
    182 void uel_promise_reject(uel_promise_t *promise, void *value);
    -
    183 
    - -
    197  uel_promise_t *promise,
    -
    198  uel_promise_state_t state,
    -
    199  void *value
    -
    200 );
    -
    201 
    -
    208 uel_closure_t uel_promise_resolver(uel_promise_t *promise);
    -
    209 
    -
    216 uel_closure_t uel_promise_rejecter(uel_promise_t *promise);
    -
    217 
    -
    224 uel_closure_t uel_promise_destroyer(uel_promise_t *promise);
    -
    225 
    -
    226 #ifdef UEL_PROMISE_SHORTCUTS
    -
    227 
    -
    228 #define THEN uel_promise_then
    -
    229 #define CATCH uel_promise_catch
    -
    230 #define AFTER uel_promise_after
    -
    231 #define ALWAYS uel_promise_always
    -
    232 
    -
    233 
    -
    234 #endif /* UEL_PROMISE_SHORTCUTS */
    -
    235 
    -
    236 #endif /* end of include guard: UEL_PROMISE_H */
    -
    -
    An issuer of promises. Contains references to pools for promises and segments.
    Definition: promise.h:90
    -
    void uel_promise_resettle(uel_promise_t *promise, uel_promise_state_t state, void *value)
    Resettles a promise as the supplied state. Unlike uel_promise_resolve() and uel_promise_reject(),...
    -
    uel_objpool_t * promise_pool
    A reference to the promise pool.
    Definition: promise.h:92
    -
    uel_promise_t * uel_promise_create(uel_promise_store_t *store, uel_closure_t closure)
    Acquires a new promise from the supplied store and binds it to the asynchronous operation started by ...
    -
    @ UEL_PROMISE_RESOLVED
    A promise that has been resolved with some value.
    Definition: promise.h:21
    -
    void * value
    The value this promise holds. Only meaningful if already settled.
    Definition: promise.h:79
    -
    uel_objpool_t * segment_pool
    A reference to the segment pool.
    Definition: promise.h:94
    -
    Defines closures, objects that bind functions to creating and calling contexts.
    -
    uel_promise_segment_t * last_segment
    The last segment to be processed when this promise settles.
    Definition: promise.h:83
    -
    void uel_promise_after(uel_promise_t *promise, uel_closure_t resolve, uel_closure_t reject)
    Adds a new synchronous segment to the promise. Either of its closures will be invoked,...
    -
    uel_closure_t uel_promise_destroyer(uel_promise_t *promise)
    Creates a closure bound to a promise. When the closure is invoked, the promise is destroyed....
    -
    uel_promise_state_t state
    The current state of this promise.
    Definition: promise.h:77
    -
    uel_promise_segment_t * next
    The next synchronous segment to be processed.
    Definition: promise.h:47
    -
    void uel_promise_then(uel_promise_t *promise, uel_closure_t resolve)
    Adds a new synchronous segment to the promise. It will be invoked upon promise resolution....
    -
    @ UEL_PROMISE_REJECTED
    A promise that has been rejected with some error.
    Definition: promise.h:22
    -
    Defines object pools, arrays of pre-allocated objects for dynamic use.
    -
    uel_promise_segment_t * first_segment
    The first segment to be processed when this promise settles.
    Definition: promise.h:81
    -
    void uel_promise_always(uel_promise_t *promise, uel_closure_t always)
    Adds a new synchronous segment to the promise. The same closure will be invoked on promise settling r...
    -
    struct uel_promise_store * source
    The promise store from where this promise was issued.
    Definition: promise.h:75
    -
    @ UEL_PROMISE_PENDING
    A promise that has not been resolved nor rejected.
    Definition: promise.h:20
    -
    uel_closure_t resolve
    The closure to be invoked when the promise is resolved.
    Definition: promise.h:43
    -
    uel_promise_store_t uel_promise_store_create(uel_objpool_t *promise_pool, uel_objpool_t *segment_pool)
    Creates a new promise store from the promise and segment pools.
    -
    enum uel_promise_state uel_promise_state_t
    Alias to the uel_promise_state enum.
    Definition: promise.h:25
    -
    void uel_promise_reject(uel_promise_t *promise, void *value)
    Settles a promise as rejected and, synchronously, invokes the reject closures of each segment in the ...
    -
    uel_promise_state
    Defines the possible states for a prommise.
    Definition: promise.h:19
    -
    uel_closure_t uel_promise_rejecter(uel_promise_t *promise)
    Creates a closure bound to a promise. When the closure is invoked with some parameter,...
    -
    A promise is association of an asynchronous operation to the possible execution paths that follow its...
    Definition: promise.h:73
    -
    uel_closure_t reject
    The closure to be invoked when the promise is rejected.
    Definition: promise.h:45
    -
    uel_closure_t uel_promise_resolver(uel_promise_t *promise)
    Creates a closure bound to a promise. When the closure is invoked with some parameter,...
    -
    Defines a single synchronous operation to be invoked when the promise is either resolved or rejected.
    Definition: promise.h:41
    -
    void uel_promise_destroy(uel_promise_t *promise)
    Destroys a promise and all of its segments. Settling this promise afterwards yields undefined behavio...
    -
    void uel_promise_catch(uel_promise_t *promise, uel_closure_t reject)
    Adds a new synchronous segment to the promise. It will be invoked upon promise rejection....
    -
    Central repository of system configuration. This is meant to be edited by the programmer as needed.
    -
    void uel_promise_resolve(uel_promise_t *promise, void *value)
    Settles a promise as resolved and, synchronously, invokes the resolve closures of each segment in the...
    - - - - diff --git a/docs/html/scheduler_8h.html b/docs/html/scheduler_8h.html deleted file mode 100644 index b9273ee..0000000 --- a/docs/html/scheduler_8h.html +++ /dev/null @@ -1,365 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/scheduler.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    scheduler.h File Reference
    -
    -
    - -

    Module responsible for keeping track of time and tasks to be run in the future. -More...

    -
    -Include dependency graph for scheduler.h:
    -
    -
    - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_scheduer_t
     The scheduler object. More...
     
    - - - - - - - - - - - - - - - - -

    -Functions

    void uel_sch_init (uel_scheduer_t *scheduler, uel_syspools_t *pools, uel_sysqueues_t *queues)
     Initialises a scheduler object. More...
     
    uel_event_t * uel_sch_run_later (uel_scheduer_t *scheduler, uint16_t timeout_in_ms, uel_closure_t closure, void *value)
     Enqueues a closure for later execution. More...
     
    uel_event_t * uel_sch_run_at_intervals (uel_scheduer_t *scheduler, uint16_t interval_in_ms, bool immediate, uel_closure_t closure, void *value)
     Enqueues a closure for execution at intervals. More...
     
    void uel_sch_manage_timers (uel_scheduer_t *scheduler)
     Enqueue timers that are due to be processed in the event queue. More...
     
    void uel_sch_update_timer (uel_scheduer_t *scheduler, uint32_t timer)
     Updates the internal time counter. More...
     
    -

    Detailed Description

    -

    Module responsible for keeping track of time and tasks to be run in the future.

    -

    Function Documentation

    - -

    ◆ uel_sch_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_sch_init (uel_scheduer_t * scheduler,
    uel_syspools_t * pools,
    uel_sysqueues_t * queues 
    )
    -
    - -

    Initialises a scheduler object.

    -
    Parameters
    - - - - -
    schedulerThe uel_scheduer_t instance to be initialised
    poolsThe system's internal pools
    queuesThe system's internal queues
    -
    -
    - -
    -
    - -

    ◆ uel_sch_manage_timers()

    - -
    -
    - - - - - - - - -
    void uel_sch_manage_timers (uel_scheduer_t * scheduler)
    -
    - -

    Enqueue timers that are due to be processed in the event queue.

    -

    Checks, based on the current time counter, what timers should be enqueued for execution. Afterwards, enqueue them.

    -
    Parameters
    - - -
    schedulerThe uel_scheduer_t to manage
    -
    -
    - -
    -
    - -

    ◆ uel_sch_run_at_intervals()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_event_t* uel_sch_run_at_intervals (uel_scheduer_t * scheduler,
    uint16_t interval_in_ms,
    bool immediate,
    uel_closure_t closure,
    void * value 
    )
    -
    - -

    Enqueues a closure for execution at intervals.

    -
    Parameters
    - - - - - - -
    schedulerThe uel_scheduer_t into which the event will be registered
    interval_in_msThe delay in milliseconds two executions of the closure
    immediateIf this flag is set, the the event will be created with a due time to the current time.
    closureThe closure to be invoked when the due time is reached
    valueThe value to invoked the closure with
    -
    -
    -
    Returns
    The scheduled event
    - -
    -
    - -

    ◆ uel_sch_run_later()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_event_t* uel_sch_run_later (uel_scheduer_t * scheduler,
    uint16_t timeout_in_ms,
    uel_closure_t closure,
    void * value 
    )
    -
    - -

    Enqueues a closure for later execution.

    -
    Parameters
    - - - - - -
    schedulerThe uel_scheduer_t into which the event will be registered
    timeout_in_msThe delay in milliseconds until the closure is run
    closureThe closure to be invoked when the due time is reached
    valueThe value to invoked the closure with
    -
    -
    -
    Returns
    The scheduled event
    - -
    -
    - -

    ◆ uel_sch_update_timer()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_sch_update_timer (uel_scheduer_t * scheduler,
    uint32_t timer 
    )
    -
    - -

    Updates the internal time counter.

    -
    Parameters
    - - - -
    schedulerThe scheduler whose time coounter should be updated
    timerThe new counter value to be acknowledged.
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/scheduler_8h__dep__incl.map b/docs/html/scheduler_8h__dep__incl.map deleted file mode 100644 index d475202..0000000 --- a/docs/html/scheduler_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/scheduler_8h__dep__incl.md5 b/docs/html/scheduler_8h__dep__incl.md5 deleted file mode 100644 index f2c900e..0000000 --- a/docs/html/scheduler_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -d0d34a02aa097dc13ef389450e75f2a6 \ No newline at end of file diff --git a/docs/html/scheduler_8h__dep__incl.png b/docs/html/scheduler_8h__dep__incl.png deleted file mode 100644 index 3011801bda5ef64aea1e14db518b202e95c39edb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5754 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
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    diff --git a/docs/html/scheduler_8h__incl.md5 b/docs/html/scheduler_8h__incl.md5
    deleted file mode 100644
    index 304d901..0000000
    --- a/docs/html/scheduler_8h__incl.md5
    +++ /dev/null
    @@ -1 +0,0 @@
    -4364fb280af1d2730ffa9ac02cb82df9
    \ No newline at end of file
    diff --git a/docs/html/scheduler_8h__incl.png b/docs/html/scheduler_8h__incl.png
    deleted file mode 100644
    index bfc66b742bc803e68753d5655c66d823848b7c30..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 46032
    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
    fZ{@}~9qsul9+oIpQu#@s;Gc%7w#r*2^MHQ
    -
    -
    -
    -
    -
    -
    -µEvLoop: include/uevloop/system/scheduler.h Source File
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    scheduler.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    6 #ifndef UEL_SCHEDULER_H
    -
    7 #define UEL_SCHEDULER_H
    -
    8 
    -
    10 #include <stdint.h>
    -
    12 
    - - - -
    16 #include "uevloop/utils/closure.h"
    -
    17 
    -
    27 typedef struct uel_scheduler uel_scheduer_t;
    - -
    35  uel_llist_t timer_list;
    -
    36 
    -
    44  uel_llist_t pause_list;
    -
    45 
    -
    46  uel_syspools_t *pools;
    -
    47  uel_sysqueues_t *queues;
    -
    48 
    -
    50  volatile uint32_t timer;
    -
    51 };
    -
    52 
    -
    59 void uel_sch_init(
    -
    60  uel_scheduer_t *scheduler,
    -
    61  uel_syspools_t *pools,
    -
    62  uel_sysqueues_t *queues
    -
    63 );
    -
    64 
    -
    73 uel_event_t *uel_sch_run_later(
    -
    74  uel_scheduer_t *scheduler,
    -
    75  uint16_t timeout_in_ms,
    -
    76  uel_closure_t closure,
    -
    77  void *value
    -
    78 );
    -
    79 
    -
    80 
    -
    91 uel_event_t *uel_sch_run_at_intervals(
    -
    92  uel_scheduer_t *scheduler,
    -
    93  uint16_t interval_in_ms,
    -
    94  bool immediate,
    -
    95  uel_closure_t closure,
    -
    96  void *value
    -
    97 );
    -
    98 
    -
    106 void uel_sch_manage_timers(uel_scheduer_t *scheduler);
    -
    107 
    -
    113 void uel_sch_update_timer(uel_scheduer_t *scheduler, uint32_t timer);
    -
    114 
    -
    115 #endif /* UEL_SCHEDULER_H */
    -
    -
    Defines a simple implementation of linked lists and functions to manipulate it.
    -
    uel_syspools_t * pools
    Reference to the system's pools.
    Definition: scheduler.h:46
    -
    Defines closures, objects that bind functions to creating and calling contexts.
    -
    void uel_sch_init(uel_scheduer_t *scheduler, uel_syspools_t *pools, uel_sysqueues_t *queues)
    Initialises a scheduler object.
    -
    uel_llist_t pause_list
    Paused timers linked list.
    Definition: scheduler.h:44
    -
    The scheduler object.
    Definition: scheduler.h:28
    -
    uel_sysqueues_t * queues
    Reference to the system's queues.
    Definition: scheduler.h:47
    -
    uel_event_t * uel_sch_run_later(uel_scheduer_t *scheduler, uint16_t timeout_in_ms, uel_closure_t closure, void *value)
    Enqueues a closure for later execution.
    -
    volatile uint32_t timer
    Internal timer. Must be updated via uel_sch_update_timer()
    Definition: scheduler.h:50
    -
    uel_event_t * uel_sch_run_at_intervals(uel_scheduer_t *scheduler, uint16_t interval_in_ms, bool immediate, uel_closure_t closure, void *value)
    Enqueues a closure for execution at intervals.
    -
    void uel_sch_update_timer(uel_scheduer_t *scheduler, uint32_t timer)
    Updates the internal time counter.
    -
    uel_llist_t timer_list
    Scheduled timers linked list.
    Definition: scheduler.h:35
    -
    A container for the system's internal queues.
    -
    A container for the system's internal pools.
    -
    void uel_sch_manage_timers(uel_scheduer_t *scheduler)
    Enqueue timers that are due to be processed in the event queue.
    - - - - diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html deleted file mode 100644 index 26dd244..0000000 --- a/docs/html/search/all_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js deleted file mode 100644 index ea4cfb9..0000000 --- a/docs/html/search/all_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['app_0',['app',['../structuel__module.html#a05f6845722afabe30337e1d294fb0a9e',1,'uel_module']]], - ['application_2eh_1',['application.h',['../application_8h.html',1,'']]], - ['automatic_2dpool_2eh_2',['automatic-pool.h',['../automatic-pool_8h.html',1,'']]], - ['autoptr_5fpool_3',['autoptr_pool',['../structuel__autopool.html#aa0f1f8622a0ba1f1d2d15d94eb5cbc71',1,'uel_autopool']]] -]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html deleted file mode 100644 index 8eb215b..0000000 --- a/docs/html/search/all_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js deleted file mode 100644 index d864035..0000000 --- a/docs/html/search/all_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['base_4',['base',['../structuel__iterator__array.html#ace993eaa734f8fd100b086c2539afad9',1,'uel_iterator_array']]], - ['buffer_5',['buffer',['../structuel__cqueue.html#a5a87f38cf8b46556a71b286c8623a54d',1,'uel_cqueue::buffer()'],['../structuel__objpool.html#a69cf1db520005f386293899cdb9e07ca',1,'uel_objpool::buffer()']]] -]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html deleted file mode 100644 index 6fd3a4a..0000000 --- a/docs/html/search/all_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js deleted file mode 100644 index befcf7a..0000000 --- a/docs/html/search/all_10.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tail_91',['tail',['../structuel__cqueue.html#aa4fa1f34111ddf307825c9a6b06c4b4e',1,'uel_cqueue::tail()'],['../structuel__llist.html#a8d93e6bd35f15f0ee438088ebf814671',1,'uel_llist::tail()']]], - ['test_92',['test',['../structuel__conditional.html#a8d83f18dd90afbc47881b9617087c4a1',1,'uel_conditional']]], - ['timeout_93',['timeout',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#a9a6b966db9c39c3302c2a1cb8e813cad',1,'event::uel_event_detail::uel_event_timer']]], - ['timer_94',['timer',['../unionevent_1_1uel__event__detail.html#a5d602dc38887276027f2dac93afcb81d',1,'event::uel_event_detail::timer()'],['../structuel__scheduler.html#a46642fc80fb6d917ed35f3ab61d1c7eb',1,'uel_scheduler::timer()']]], - ['timer_5flist_95',['timer_list',['../structuel__scheduler.html#a9c71f717e4ca6878742aad2e147e9dd6',1,'uel_scheduler']]], - ['type_96',['type',['../structevent.html#a22c24ebb438dfad40f977484a1fa7a35',1,'event']]] -]; diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html deleted file mode 100644 index f78343b..0000000 --- a/docs/html/search/all_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js deleted file mode 100644 index 6e030ce..0000000 --- a/docs/html/search/all_11.js +++ /dev/null @@ -1,188 +0,0 @@ -var searchData= -[ - ['uel_5fapp_5fenqueue_5fclosure_97',['uel_app_enqueue_closure',['../application_8h.html#a0ccd5d564ff573bcf157a0b21f58cca7',1,'application.h']]], - ['uel_5fapp_5fevent_98',['uel_app_event',['../application_8h.html#a335ab53567298b8918257c2970b388f2',1,'application.h']]], - ['uel_5fapp_5fevent_5ft_99',['uel_app_event_t',['../application_8h.html#a138e72d6aced8d43e9a2d0c63c830080',1,'application.h']]], - ['uel_5fapp_5finit_100',['uel_app_init',['../application_8h.html#ab221d8fc71af4fbf92525a7691b039ae',1,'application.h']]], - ['uel_5fapp_5fload_101',['uel_app_load',['../application_8h.html#aed8a446de669fcab5bc591fb28d3b5f6',1,'application.h']]], - ['uel_5fapp_5fobserve_102',['uel_app_observe',['../application_8h.html#ab581cf79189c8c2bdbb6b476ee91c761',1,'application.h']]], - ['uel_5fapp_5frequire_103',['uel_app_require',['../application_8h.html#a66ccab648cf052380fd7459748316e29',1,'application.h']]], - ['uel_5fapp_5frun_5fat_5fintervals_104',['uel_app_run_at_intervals',['../application_8h.html#a5f9d6a430845dc9bc6150346f8bb00ef',1,'application.h']]], - ['uel_5fapp_5frun_5flater_105',['uel_app_run_later',['../application_8h.html#a662ad4bd4836fe3790eefe21fd38ba0e',1,'application.h']]], - ['uel_5fapp_5ftick_106',['uel_app_tick',['../application_8h.html#adbbe5a9f65d8b1168d00c270cff52085',1,'application.h']]], - ['uel_5fapp_5fupdate_5ftimer_107',['uel_app_update_timer',['../application_8h.html#aac33288da9d190eda72d9598b877b7f7',1,'application.h']]], - ['uel_5fapplication_108',['uel_application',['../structuel__application.html',1,'']]], - ['uel_5fautopool_109',['uel_autopool',['../structuel__autopool.html',1,'']]], - ['uel_5fautopool_5falloc_110',['uel_autopool_alloc',['../automatic-pool_8h.html#aa4824c8fb0acb2059ee3c1ebf327712f',1,'automatic-pool.h']]], - ['uel_5fautopool_5fbuffers_111',['UEL_AUTOPOOL_BUFFERS',['../automatic-pool_8h.html#a956766ef0a875886ce9cee1751fed842',1,'automatic-pool.h']]], - ['uel_5fautopool_5fbuffers_5fat_112',['UEL_AUTOPOOL_BUFFERS_AT',['../automatic-pool_8h.html#a06ddb8294f2f7ff72a458684df783479',1,'automatic-pool.h']]], - ['uel_5fautopool_5fbuffers_5fin_113',['UEL_AUTOPOOL_BUFFERS_IN',['../automatic-pool_8h.html#aed55c3bfece785d4bc440359c4a84697',1,'automatic-pool.h']]], - ['uel_5fautopool_5finit_114',['uel_autopool_init',['../automatic-pool_8h.html#a32b26c65f4e2c7dfc733e14a0c06b746',1,'automatic-pool.h']]], - ['uel_5fautopool_5fis_5fempty_115',['uel_autopool_is_empty',['../automatic-pool_8h.html#aa94c4ff64e887bff5dfc5c8ef3fcd380',1,'automatic-pool.h']]], - ['uel_5fautopool_5fset_5fconstructor_116',['uel_autopool_set_constructor',['../automatic-pool_8h.html#ab00201d7a847f7844ba6a1aebe38384d',1,'automatic-pool.h']]], - ['uel_5fautopool_5fset_5fdestructor_117',['uel_autopool_set_destructor',['../automatic-pool_8h.html#a7f57eb19fffa1865c2a8b69aa61acc2b',1,'automatic-pool.h']]], - ['uel_5fautoptr_118',['uel_autoptr',['../structuel__autoptr.html',1,'']]], - ['uel_5fautoptr_5fdealloc_119',['uel_autoptr_dealloc',['../automatic-pool_8h.html#affb23d5f2209456cfcb4228ae258f409',1,'automatic-pool.h']]], - ['uel_5fautoptr_5ft_120',['uel_autoptr_t',['../automatic-pool_8h.html#a83a2aef2df919bea22dd489c0a5403fd',1,'automatic-pool.h']]], - ['uel_5fclosure_121',['uel_closure',['../structuel__closure.html',1,'']]], - ['uel_5fclosure_5fcreate_122',['uel_closure_create',['../closure_8h.html#adbc9cc1a9562693b06bfacd82d8ac978',1,'closure.h']]], - ['uel_5fclosure_5ffunction_5ft_123',['uel_closure_function_t',['../closure_8h.html#a04cc5d51a9c86aeedcd6641b43dd8564',1,'closure.h']]], - ['uel_5fclosure_5finvoke_124',['uel_closure_invoke',['../closure_8h.html#adcd44820dd3715e206fdf71800e8926c',1,'closure.h']]], - ['uel_5fconditional_125',['uel_conditional',['../structuel__conditional.html',1,'']]], - ['uel_5fconditional_5fapply_126',['uel_conditional_apply',['../conditional_8h.html#a09ded07bf4d8645615a25557a87c996d',1,'conditional.h']]], - ['uel_5fconditional_5finit_127',['uel_conditional_init',['../conditional_8h.html#acb6e7aa5cd25863e7a628d233a967412',1,'conditional.h']]], - ['uel_5fcqueue_128',['uel_cqueue',['../structuel__cqueue.html',1,'']]], - ['uel_5fcqueue_5fclear_129',['uel_cqueue_clear',['../circular-queue_8h.html#a8df6047e956a849653bc6fe980706a07',1,'circular-queue.h']]], - ['uel_5fcqueue_5fcount_130',['uel_cqueue_count',['../circular-queue_8h.html#ad5efb7d3f6579abf94ae15c83cbcde40',1,'circular-queue.h']]], - ['uel_5fcqueue_5finit_131',['uel_cqueue_init',['../circular-queue_8h.html#acf451cae31642c456faada2501a4977e',1,'circular-queue.h']]], - ['uel_5fcqueue_5fis_5fempty_132',['uel_cqueue_is_empty',['../circular-queue_8h.html#abcd173ac88be8796deacdff15aa0e964',1,'circular-queue.h']]], - ['uel_5fcqueue_5fis_5ffull_133',['uel_cqueue_is_full',['../circular-queue_8h.html#a8ab1a212bf38b1578f9df769b65437e3',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpeek_5fhead_134',['uel_cqueue_peek_head',['../circular-queue_8h.html#a8d23ce639b076f853247a62670cfae30',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpeek_5ftail_135',['uel_cqueue_peek_tail',['../circular-queue_8h.html#aaf2d52fbe078fc80ef8e6119d12155ff',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpop_136',['uel_cqueue_pop',['../circular-queue_8h.html#a818331aa6bf56e977f7a95d996e9009d',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpush_137',['uel_cqueue_push',['../circular-queue_8h.html#ae65acd13845cdd8e2492201538c2e968',1,'circular-queue.h']]], - ['uel_5fcritical_5fenter_138',['UEL_CRITICAL_ENTER',['../critical-section_8h.html#a7c0f97308e835939cf0404b167cc188a',1,'critical-section.h']]], - ['uel_5fcritical_5fexit_139',['UEL_CRITICAL_EXIT',['../critical-section_8h.html#aebdb2b9597df1dac79b2fd88d58d6539',1,'critical-section.h']]], - ['uel_5fdeclare_5fautopool_5fbuffers_140',['UEL_DECLARE_AUTOPOOL_BUFFERS',['../automatic-pool_8h.html#a59c59798394f60a6e567954997cc8176',1,'automatic-pool.h']]], - ['uel_5fdeclare_5fobjpool_5fbuffers_141',['UEL_DECLARE_OBJPOOL_BUFFERS',['../object-pool_8h.html#a6f94946d39d323f7ea0f409962c59f1e',1,'object-pool.h']]], - ['uel_5fevent_5fconfig_5fclosure_142',['uel_event_config_closure',['../event_8h.html#a39a1530d0b0a93a8d810d0e37fe03160',1,'event.h']]], - ['uel_5fevent_5fconfig_5fobserver_143',['uel_event_config_observer',['../event_8h.html#afc174dfecb1d892499c2edd5a1f5f879',1,'event.h']]], - ['uel_5fevent_5fconfig_5fsignal_144',['uel_event_config_signal',['../event_8h.html#a2345bf8b0ddb2f59b4d5f35f0442d3cf',1,'event.h']]], - ['uel_5fevent_5fconfig_5fsignal_5flistener_145',['uel_event_config_signal_listener',['../event_8h.html#a4f2472662aa1378f437ac46dd85088e8',1,'event.h']]], - ['uel_5fevent_5fconfig_5ftimer_146',['uel_event_config_timer',['../event_8h.html#ac5daec069fa7e1e98044307c06e7bc85',1,'event.h']]], - ['uel_5fevent_5fdetail_147',['uel_event_detail',['../unionevent_1_1uel__event__detail.html',1,'event']]], - ['uel_5fevent_5flistener_148',['uel_event_listener',['../structevent_1_1uel__event__detail_1_1uel__event__listener.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5fobserver_149',['uel_event_observer',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5fobserver_5fcancel_150',['uel_event_observer_cancel',['../event_8h.html#ad3ebbe62dc7e5749c447b28238499af6',1,'event.h']]], - ['uel_5fevent_5fsignal_151',['uel_event_signal',['../structevent_1_1uel__event__detail_1_1uel__event__signal.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5ftimer_152',['uel_event_timer',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5ftimer_5fcancel_153',['uel_event_timer_cancel',['../event_8h.html#a306a18151beee2907b06895f86f8837d',1,'event.h']]], - ['uel_5fevent_5ftimer_5fpause_154',['uel_event_timer_pause',['../event_8h.html#af7fa468eacdeaf628daa64808721dabd',1,'event.h']]], - ['uel_5fevent_5ftimer_5fresume_155',['uel_event_timer_resume',['../event_8h.html#ae876c8b387f90c2a05a78a922ed8c9fb',1,'event.h']]], - ['uel_5fevent_5ftimer_5fstatus_156',['uel_event_timer_status',['../event_8h.html#ae586ca82fed67108457450a49661a4aa',1,'event.h']]], - ['uel_5fevent_5ftimer_5fstatus_5ft_157',['uel_event_timer_status_t',['../event_8h.html#ada757ae763328a1774f87efe179e0d0d',1,'event.h']]], - ['uel_5fevent_5ftype_158',['uel_event_type',['../event_8h.html#a0a3805dfccf139ba6521d57e0b79fb60',1,'event.h']]], - ['uel_5fevent_5ftype_5ft_159',['uel_event_type_t',['../event_8h.html#a04647f8821482fc8f635924fc2f1539b',1,'event.h']]], - ['uel_5fevloop_160',['uel_evloop',['../structuel__evloop.html',1,'']]], - ['uel_5fevloop_5fenqueue_5fclosure_161',['uel_evloop_enqueue_closure',['../event-loop_8h.html#a1d3464894f0281c7b1f4c9c18dddcaf4',1,'event-loop.h']]], - ['uel_5fevloop_5finit_162',['uel_evloop_init',['../event-loop_8h.html#abb6102256fd588588045a5743f07247d',1,'event-loop.h']]], - ['uel_5fevloop_5fobserve_163',['uel_evloop_observe',['../event-loop_8h.html#af08a755b11d666cdfa0b35446d007d13',1,'event-loop.h']]], - ['uel_5fevloop_5fobserve_5fonce_164',['uel_evloop_observe_once',['../event-loop_8h.html#a67264e6232817d1f23288856dbd1a3bb',1,'event-loop.h']]], - ['uel_5fevloop_5frun_165',['uel_evloop_run',['../event-loop_8h.html#ad5371df9faa7072e1fd11470448de901',1,'event-loop.h']]], - ['uel_5ffunc_5fall_166',['uel_func_all',['../functional_8h.html#a27004669ef5f883bdf911b6d3ec28995',1,'functional.h']]], - ['uel_5ffunc_5fany_167',['uel_func_any',['../functional_8h.html#ab04a6190af8139356acde68fbfa36d19',1,'functional.h']]], - ['uel_5ffunc_5fconditional_168',['uel_func_conditional',['../functional_8h.html#a97c901138cf1de87f9c5675d525d9842',1,'functional.h']]], - ['uel_5ffunc_5fcount_169',['uel_func_count',['../functional_8h.html#a8c8014f63f6b20972697e867734034d4',1,'functional.h']]], - ['uel_5ffunc_5ffind_170',['uel_func_find',['../functional_8h.html#ac70b7b1e40d33fc05249d800361d4303',1,'functional.h']]], - ['uel_5ffunc_5fforeach_171',['uel_func_foreach',['../functional_8h.html#abe102286c62fd56e5f16014282144467',1,'functional.h']]], - ['uel_5ffunc_5fmap_172',['uel_func_map',['../functional_8h.html#a03c3cc3260a99348d50c6f8de16248ba',1,'functional.h']]], - ['uel_5ffunc_5fmapper_173',['uel_func_mapper',['../structuel__func__mapper.html',1,'']]], - ['uel_5ffunc_5fmapper_5finit_174',['uel_func_mapper_init',['../functional_8h.html#a6623a1b2cdf37983fd6bebf2fd3570c4',1,'functional.h']]], - ['uel_5ffunc_5fnone_175',['uel_func_none',['../functional_8h.html#a0f10f9a3f9d0131952d3ffc6ff6cdac0',1,'functional.h']]], - ['uel_5ffunc_5fpipeline_176',['uel_func_pipeline',['../functional_8h.html#a59ef21c6c45d7f95955f2b49f7ebc241',1,'functional.h']]], - ['uel_5fiterator_177',['uel_iterator',['../structuel__iterator.html',1,'']]], - ['uel_5fiterator_5fall_178',['uel_iterator_all',['../iterator_8h.html#add9308f85bc2ecf781bca558c3e0ce50',1,'iterator.h']]], - ['uel_5fiterator_5fany_179',['uel_iterator_any',['../iterator_8h.html#a354f1f9b00d7033338dd2e5bd078da19',1,'iterator.h']]], - ['uel_5fiterator_5farray_180',['uel_iterator_array',['../structuel__iterator__array.html',1,'']]], - ['uel_5fiterator_5farray_5fcreate_181',['uel_iterator_array_create',['../iterator_8h.html#a0acc2751d0a555963f923fca73c0200a',1,'iterator.h']]], - ['uel_5fiterator_5farray_5fnext_182',['uel_iterator_array_next',['../iterator_8h.html#ae527f0990ab89f4f2e5ad26fd6fd90b6',1,'iterator.h']]], - ['uel_5fiterator_5fcount_183',['uel_iterator_count',['../iterator_8h.html#ae415aaa0c760c504717fcacfca3b294d',1,'iterator.h']]], - ['uel_5fiterator_5ffind_184',['uel_iterator_find',['../iterator_8h.html#ae77e788e5eae4d1ef812005ccc6d83e9',1,'iterator.h']]], - ['uel_5fiterator_5fforeach_185',['uel_iterator_foreach',['../iterator_8h.html#a590b4d91255d67d8878675503ec235f0',1,'iterator.h']]], - ['uel_5fiterator_5fllist_5fcreate_186',['uel_iterator_llist_create',['../iterator_8h.html#ae6d556c0d69311f1ea8deb05ddb722a4',1,'iterator.h']]], - ['uel_5fiterator_5fllist_5fnext_187',['uel_iterator_llist_next',['../iterator_8h.html#a52d44b593487736766981844ab9c381f',1,'iterator.h']]], - ['uel_5fiterator_5fllist_5ft_188',['uel_iterator_llist_t',['../iterator_8h.html#a0646f93de558b7d6c5c312c010cf7254',1,'iterator.h']]], - ['uel_5fiterator_5fmap_189',['uel_iterator_map',['../iterator_8h.html#a6ca0083f388164973c9d6f9518799b03',1,'iterator.h']]], - ['uel_5fiterator_5fmap_5fboundless_190',['UEL_ITERATOR_MAP_BOUNDLESS',['../iterator_8h.html#a6f1cacb4e55d7a7e1b7d1a4ae9f8c2bb',1,'iterator.h']]], - ['uel_5fiterator_5fnone_191',['uel_iterator_none',['../iterator_8h.html#a51d3573756956d42f7b67b5b9acc27a3',1,'iterator.h']]], - ['uel_5fllist_192',['uel_llist',['../structuel__llist.html',1,'']]], - ['uel_5fllist_5finit_193',['uel_llist_init',['../linked-list_8h.html#a636d9d433df7fd53fc3138b6c77df75a',1,'linked-list.h']]], - ['uel_5fllist_5finsert_5fat_194',['uel_llist_insert_at',['../linked-list_8h.html#a2486cc91fa52a2fac1f0b0e7dc9a4562',1,'linked-list.h']]], - ['uel_5fllist_5fnode_195',['uel_llist_node',['../structuel__llist__node.html',1,'']]], - ['uel_5fllist_5fpeek_5fhead_196',['uel_llist_peek_head',['../linked-list_8h.html#ab663ff1457ec2ddbcba9a8f1c7399163',1,'linked-list.h']]], - ['uel_5fllist_5fpeek_5ftail_197',['uel_llist_peek_tail',['../linked-list_8h.html#a33fca34e728f3524f6ebd328b96a1c80',1,'linked-list.h']]], - ['uel_5fllist_5fpop_5fhead_198',['uel_llist_pop_head',['../linked-list_8h.html#aeb330b9c1971e23248fc39d918979503',1,'linked-list.h']]], - ['uel_5fllist_5fpop_5ftail_199',['uel_llist_pop_tail',['../linked-list_8h.html#ac4f27f948e355936eede9ef5ef808d43',1,'linked-list.h']]], - ['uel_5fllist_5fpush_5fhead_200',['uel_llist_push_head',['../linked-list_8h.html#a0a98f53f55f86adb45e4f0f357d748a8',1,'linked-list.h']]], - ['uel_5fllist_5fpush_5ftail_201',['uel_llist_push_tail',['../linked-list_8h.html#a2ab3add326e3c3a382386786fa5bbf63',1,'linked-list.h']]], - ['uel_5fllist_5fremove_202',['uel_llist_remove',['../linked-list_8h.html#acdb87dcd0d23db28be24297a7f7db7b0',1,'linked-list.h']]], - ['uel_5fllist_5fremove_5fwhile_203',['uel_llist_remove_while',['../linked-list_8h.html#a55def6b7dd819e8e9798787f781d00b7',1,'linked-list.h']]], - ['uel_5fmodule_204',['uel_module',['../structuel__module.html',1,'']]], - ['uel_5fmodule_5fconfig_205',['uel_module_config',['../module_8h.html#aa20d61157d25ebdb6abd2d774e2035d9',1,'module.h']]], - ['uel_5fmodule_5fhook_5ft_206',['uel_module_hook_t',['../module_8h.html#ad589448a7bcdb1d7cce57f42346a1657',1,'module.h']]], - ['uel_5fmodule_5finit_207',['uel_module_init',['../module_8h.html#a3a1d7dc04cf2b7c5c84a61cfd5056772',1,'module.h']]], - ['uel_5fmodule_5flaunch_208',['uel_module_launch',['../module_8h.html#a144a21cefd8d58d672b02b21def8c627',1,'module.h']]], - ['uel_5fnop_209',['uel_nop',['../closure_8h.html#a1f88fc773dbcea710594c7175d3a4ac3',1,'closure.h']]], - ['uel_5fobjpool_210',['uel_objpool',['../structuel__objpool.html',1,'']]], - ['uel_5fobjpool_5facquire_211',['uel_objpool_acquire',['../object-pool_8h.html#a54248e0810ccb791a8ff82d3de8fc6c5',1,'object-pool.h']]], - ['uel_5fobjpool_5fbuffers_212',['UEL_OBJPOOL_BUFFERS',['../object-pool_8h.html#a623ea70a0df4cc76d0e65a99bc5c26c9',1,'object-pool.h']]], - ['uel_5fobjpool_5fbuffers_5fat_213',['UEL_OBJPOOL_BUFFERS_AT',['../object-pool_8h.html#aa3a5c0e14ab186fffed61c2b3d67405e',1,'object-pool.h']]], - ['uel_5fobjpool_5fbuffers_5fin_214',['UEL_OBJPOOL_BUFFERS_IN',['../object-pool_8h.html#ae25ae5d897163fb9104f4295f6fdf84b',1,'object-pool.h']]], - ['uel_5fobjpool_5finit_215',['uel_objpool_init',['../object-pool_8h.html#ab49dd047b6e4fcc0939dfd651e3b3666',1,'object-pool.h']]], - ['uel_5fobjpool_5fis_5fempty_216',['uel_objpool_is_empty',['../object-pool_8h.html#ae116db7f19b0971e6781e375361265ce',1,'object-pool.h']]], - ['uel_5fobjpool_5frelease_217',['uel_objpool_release',['../object-pool_8h.html#af4370a164b82e436749fbc9f8af9a114',1,'object-pool.h']]], - ['uel_5fpipeline_218',['uel_pipeline',['../structuel__pipeline.html',1,'']]], - ['uel_5fpipeline_5fapply_219',['uel_pipeline_apply',['../pipeline_8h.html#a54df79756518430d753961735c93d270',1,'pipeline.h']]], - ['uel_5fpipeline_5fdeclare_220',['UEL_PIPELINE_DECLARE',['../pipeline_8h.html#a64c47a347b70a55627e1a66a9972890c',1,'pipeline.h']]], - ['uel_5fpipeline_5finit_221',['uel_pipeline_init',['../pipeline_8h.html#ad7cfa65777a90f537ab031b6d8dac028',1,'pipeline.h']]], - ['uel_5fpromise_222',['uel_promise',['../structuel__promise.html',1,'']]], - ['uel_5fpromise_5fafter_223',['uel_promise_after',['../promise_8h.html#a4b1b8ee1101104f1beaa782ef630767f',1,'promise.h']]], - ['uel_5fpromise_5falways_224',['uel_promise_always',['../promise_8h.html#a6a932817fcd43d5eaa2723b8c34132ff',1,'promise.h']]], - ['uel_5fpromise_5fcatch_225',['uel_promise_catch',['../promise_8h.html#a550561c65f5abb38bc5c3b25083dd468',1,'promise.h']]], - ['uel_5fpromise_5fcreate_226',['uel_promise_create',['../promise_8h.html#a5c0cdf2e971bf738362af1761c729bd4',1,'promise.h']]], - ['uel_5fpromise_5fdestroy_227',['uel_promise_destroy',['../promise_8h.html#ac43ce3e3316581da32cf3e21c15901f0',1,'promise.h']]], - ['uel_5fpromise_5fdestroyer_228',['uel_promise_destroyer',['../promise_8h.html#a9b68547bf7ac1a5860b165a4638bcc51',1,'promise.h']]], - ['uel_5fpromise_5fpending_229',['UEL_PROMISE_PENDING',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856ae619a3bfec8234d4302fbec8c2dfe6d2',1,'promise.h']]], - ['uel_5fpromise_5freject_230',['uel_promise_reject',['../promise_8h.html#a2e904cfb182cb5619b0a31790fca697e',1,'promise.h']]], - ['uel_5fpromise_5frejected_231',['UEL_PROMISE_REJECTED',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856ae137a12a3c564815d59e2548e304ab39',1,'promise.h']]], - ['uel_5fpromise_5frejecter_232',['uel_promise_rejecter',['../promise_8h.html#a09b820cf5093f6979da34cbe6faa1787',1,'promise.h']]], - ['uel_5fpromise_5fresettle_233',['uel_promise_resettle',['../promise_8h.html#a2d226c4ed1a94964db50dbb5a7f958df',1,'promise.h']]], - ['uel_5fpromise_5fresolve_234',['uel_promise_resolve',['../promise_8h.html#abe5aae85467a9af06b580df74aeedb8c',1,'promise.h']]], - ['uel_5fpromise_5fresolved_235',['UEL_PROMISE_RESOLVED',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856a5ef1eb9b1cdf442f77a5844d9cca3ce0',1,'promise.h']]], - ['uel_5fpromise_5fresolver_236',['uel_promise_resolver',['../promise_8h.html#acffa84389150a36442905a6f89cb827b',1,'promise.h']]], - ['uel_5fpromise_5fsegment_237',['uel_promise_segment',['../structuel__promise__segment.html',1,'']]], - ['uel_5fpromise_5fshortcuts_238',['UEL_PROMISE_SHORTCUTS',['../config_8h.html#a815cda45b611ac94d7b7b56bbeb12e1c',1,'config.h']]], - ['uel_5fpromise_5fstate_239',['uel_promise_state',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856',1,'promise.h']]], - ['uel_5fpromise_5fstate_5ft_240',['uel_promise_state_t',['../promise_8h.html#a95fdddb2c4ccf80657feebb0d4c9adfb',1,'promise.h']]], - ['uel_5fpromise_5fstore_241',['uel_promise_store',['../structuel__promise__store.html',1,'']]], - ['uel_5fpromise_5fstore_5fcreate_242',['uel_promise_store_create',['../promise_8h.html#a4e3a7f9f0d154d4a2fa1c17520bd5561',1,'promise.h']]], - ['uel_5fpromise_5fthen_243',['uel_promise_then',['../promise_8h.html#abb34042cccffccafefb813a902ec8389',1,'promise.h']]], - ['uel_5fsch_5finit_244',['uel_sch_init',['../scheduler_8h.html#a7f4ae225987bb741ca824c83a96ce138',1,'scheduler.h']]], - ['uel_5fsch_5fmanage_5ftimers_245',['uel_sch_manage_timers',['../scheduler_8h.html#a2666a61c55a518fd602cee03a014ed10',1,'scheduler.h']]], - ['uel_5fsch_5frun_5fat_5fintervals_246',['uel_sch_run_at_intervals',['../scheduler_8h.html#a6a993056042a7649e1e7375eb2bb588d',1,'scheduler.h']]], - ['uel_5fsch_5frun_5flater_247',['uel_sch_run_later',['../scheduler_8h.html#ad5909fddc1856cc1b980a0445602c67c',1,'scheduler.h']]], - ['uel_5fsch_5fupdate_5ftimer_248',['uel_sch_update_timer',['../scheduler_8h.html#a0a5a89adf45a470aed0e39925a256ea2',1,'scheduler.h']]], - ['uel_5fscheduler_249',['uel_scheduler',['../structuel__scheduler.html',1,'']]], - ['uel_5fsignal_5femit_250',['uel_signal_emit',['../signal_8h.html#af849f4effe2577efe439387d3a8a710a',1,'signal.h']]], - ['uel_5fsignal_5flisten_251',['uel_signal_listen',['../signal_8h.html#ac11a6acd9237d30551bc0dc8ba406189',1,'signal.h']]], - ['uel_5fsignal_5flisten_5fonce_252',['uel_signal_listen_once',['../signal_8h.html#a6d59d4a7b4c0c5f6b1d271ed6e8a8212',1,'signal.h']]], - ['uel_5fsignal_5flistener_5ft_253',['uel_signal_listener_t',['../signal_8h.html#acf4ce9806bae5489706f0409f0a58067',1,'signal.h']]], - ['uel_5fsignal_5fmax_5flisteners_254',['UEL_SIGNAL_MAX_LISTENERS',['../config_8h.html#a7dec29ef683393c228642729b534fbf5',1,'config.h']]], - ['uel_5fsignal_5freject_5fpromise_255',['uel_signal_reject_promise',['../signal_8h.html#a9dafdd735ff9f06ddc2b0c80862e8af6',1,'signal.h']]], - ['uel_5fsignal_5frelay_256',['uel_signal_relay',['../structuel__signal__relay.html',1,'']]], - ['uel_5fsignal_5frelay_5finit_257',['uel_signal_relay_init',['../signal_8h.html#a8eaa68abe3e288c96eb0ae88d244364f',1,'signal.h']]], - ['uel_5fsignal_5fresolve_5fpromise_258',['uel_signal_resolve_promise',['../signal_8h.html#a1b208dd90b74c52c2775518c242f7c8a',1,'signal.h']]], - ['uel_5fsignal_5ft_259',['uel_signal_t',['../signal_8h.html#a4321d8b0f2c6bc3c0cc143e1bb1d1a2b',1,'signal.h']]], - ['uel_5fsignal_5funlisten_260',['uel_signal_unlisten',['../signal_8h.html#a3fb31014f6cec7acf29e7de4b66fe531',1,'signal.h']]], - ['uel_5fsyspools_5facquire_5fevent_261',['uel_syspools_acquire_event',['../system-pools_8h.html#afa790328d17062994bc3f958b9e96ea4',1,'system-pools.h']]], - ['uel_5fsyspools_5facquire_5fllist_5fnode_262',['uel_syspools_acquire_llist_node',['../system-pools_8h.html#a11d44d4872dd5110c3573e0dd8cfc9d3',1,'system-pools.h']]], - ['uel_5fsyspools_5fevent_5fpool_5fsize_263',['UEL_SYSPOOLS_EVENT_POOL_SIZE',['../system-pools_8h.html#a338ddcefe15ac9790e2c246817b2bd86',1,'system-pools.h']]], - ['uel_5fsyspools_5fevent_5fpool_5fsize_5flog2n_264',['UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N',['../config_8h.html#aacb6827b910a09fe40f49dfc22bc3a9b',1,'config.h']]], - ['uel_5fsyspools_5finit_265',['uel_syspools_init',['../system-pools_8h.html#a737df9d7ca7c587711dc8c59d9f1c277',1,'system-pools.h']]], - ['uel_5fsyspools_5fllist_5fnode_5fpool_5fsize_266',['UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE',['../system-pools_8h.html#a5015b8b98a72b1642be11223dfd4b400',1,'system-pools.h']]], - ['uel_5fsyspools_5fllist_5fnode_5fpool_5fsize_5flog2n_267',['UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N',['../config_8h.html#ab3932a51e5254319c1d0feb178a5b164',1,'config.h']]], - ['uel_5fsyspools_5frelease_5fevent_268',['uel_syspools_release_event',['../system-pools_8h.html#a52991a37f5e0da28ecc6161ed8932911',1,'system-pools.h']]], - ['uel_5fsyspools_5frelease_5fllist_5fnode_269',['uel_syspools_release_llist_node',['../system-pools_8h.html#ae392a6e20954e33629d67a5729c9de02',1,'system-pools.h']]], - ['uel_5fsysqueues_5fcount_5fenqueued_5fevents_270',['uel_sysqueues_count_enqueued_events',['../system-queues_8h.html#a7caa3edc1266d927d334b6b85af5ec95',1,'system-queues.h']]], - ['uel_5fsysqueues_5fcount_5fscheduled_5fevents_271',['uel_sysqueues_count_scheduled_events',['../system-queues_8h.html#a50a5ee20919b0362d640b3816a2ed191',1,'system-queues.h']]], - ['uel_5fsysqueues_5fenqueue_5fevent_272',['uel_sysqueues_enqueue_event',['../system-queues_8h.html#ac58c61b4b8d432898a6c5b2a47b7d197',1,'system-queues.h']]], - ['uel_5fsysqueues_5fevent_5fqueue_5fsize_273',['UEL_SYSQUEUES_EVENT_QUEUE_SIZE',['../system-queues_8h.html#a1d616ec92aac7c521870c1ddfbfecba9',1,'system-queues.h']]], - ['uel_5fsysqueues_5fevent_5fqueue_5fsize_5flog2n_274',['UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N',['../config_8h.html#a89c8fac6285ec1a2ad001ee55d131e90',1,'config.h']]], - ['uel_5fsysqueues_5fget_5fenqueued_5fevent_275',['uel_sysqueues_get_enqueued_event',['../system-queues_8h.html#a897b9899eefbe90ac11e651b5117bfd3',1,'system-queues.h']]], - ['uel_5fsysqueues_5fget_5fscheduled_5fevent_276',['uel_sysqueues_get_scheduled_event',['../system-queues_8h.html#a1730d1f7a7e86a3a79df40938fa9d735',1,'system-queues.h']]], - ['uel_5fsysqueues_5finit_277',['uel_sysqueues_init',['../system-queues_8h.html#aa988e6daddfd00129d56c1db350edc5a',1,'system-queues.h']]], - ['uel_5fsysqueues_5fschedule_5fevent_278',['uel_sysqueues_schedule_event',['../system-queues_8h.html#ac14ac33abf67b93d8904e5ebb1218028',1,'system-queues.h']]], - ['uel_5fsysqueues_5fschedule_5fqueue_5fsize_279',['UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE',['../system-queues_8h.html#a0a913dc860f0136e0633381c33d1821e',1,'system-queues.h']]], - ['uel_5fsysqueues_5fschedule_5fqueue_5fsize_5flog2n_280',['UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N',['../config_8h.html#af83cc01ed7c71a81a08be6340bff7f4b',1,'config.h']]], - ['unlistened_281',['unlistened',['../structevent_1_1uel__event__detail_1_1uel__event__listener.html#a7c68240052221e1ebbab4a9c1c096512',1,'event::uel_event_detail::uel_event_listener']]] -]; diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html deleted file mode 100644 index dd9ff1d..0000000 --- a/docs/html/search/all_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js deleted file mode 100644 index 96b375f..0000000 --- a/docs/html/search/all_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_282',['value',['../structevent.html#af86fbbe00fa2851d24d29ba9b39f3ee2',1,'event::value()'],['../structevent_1_1uel__event__detail_1_1uel__event__signal.html#a74bcb07d316f77b7a2ec6efc3a62fe31',1,'event::uel_event_detail::uel_event_signal::value()'],['../structuel__llist__node.html#a1be7a63ce1a37b1bbb18bef46b8eae58',1,'uel_llist_node::value()'],['../structuel__promise.html#afca1c89f5e4903aa9df56416e0ae0f98',1,'uel_promise::value()']]] -]; diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html deleted file mode 100644 index 2611a10..0000000 --- a/docs/html/search/all_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js deleted file mode 100644 index 0bb0da1..0000000 --- a/docs/html/search/all_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['width_283',['width',['../structuel__signal__relay.html#aedd6f0d0fee789b65472d7fa3981322b',1,'uel_signal_relay']]] -]; diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html deleted file mode 100644 index 72d12e9..0000000 --- a/docs/html/search/all_14.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js deleted file mode 100644 index 2f2b1fe..0000000 --- a/docs/html/search/all_14.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['µevloop_20_3cimg_20src_3d_22https_3a_2f_2fgithub_2ecom_2fandsmedeiros_2fuevloop_2fworkflows_2fc_2fc_2b_2b_2520ci_2fbadge_2esvg_3fevent_3dpush_22_20alt_3d_22c_2fc_2b_2b_20ci_22_2f_3e_284',['µEvLoop <img src="https://github.com/andsmedeiros/uevloop/workflows/C/C++%20CI/badge.svg?event=push" alt="C/C++ CI"/>',['../index.html',1,'']]] -]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html deleted file mode 100644 index b26d916..0000000 --- a/docs/html/search/all_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js deleted file mode 100644 index 7d9f365..0000000 --- a/docs/html/search/all_2.js +++ /dev/null @@ -1,17 +0,0 @@ -var searchData= -[ - ['cancelled_6',['cancelled',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#a1bd55787112aae874e8b4c906a37614e',1,'event::uel_event_detail::uel_event_observer']]], - ['circular_2dqueue_2eh_7',['circular-queue.h',['../circular-queue_8h.html',1,'']]], - ['closure_8',['closure',['../structevent.html#aac834e055b38447126d27c0dec51498c',1,'event']]], - ['closure_2eh_9',['closure.h',['../closure_8h.html',1,'']]], - ['closures_10',['closures',['../structuel__pipeline.html#a5dafb55ed93d4b7a6e8c7a9cfc50af4c',1,'uel_pipeline']]], - ['collection_11',['collection',['../structuel__iterator.html#a37bae427d28c271a3e9fbdc0c3a70b8d',1,'uel_iterator']]], - ['condition_5fvar_12',['condition_var',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#ac17e9951df24dfb12fa6a7824f65c311',1,'event::uel_event_detail::uel_event_observer']]], - ['conditional_2eh_13',['conditional.h',['../conditional_8h.html',1,'']]], - ['config_14',['config',['../structuel__module.html#a9b066ffb62e47bf3fac7e0d70623eb15',1,'uel_module']]], - ['config_2eh_15',['config.h',['../config_8h.html',1,'']]], - ['constructor_16',['constructor',['../structuel__autopool.html#a7890d66a262f1c057598b5cf281df2c2',1,'uel_autopool']]], - ['context_17',['context',['../structuel__closure.html#ae22a9c4275f31ab9741ef42479ce59cf',1,'uel_closure']]], - ['count_18',['count',['../structuel__cqueue.html#a0ef8883068b2d0b6d37e03cd33c46628',1,'uel_cqueue::count()'],['../structuel__llist.html#abd8b53084233e30e2dd36e1e2e7538f0',1,'uel_llist::count()'],['../structuel__pipeline.html#a6b52ff1fecb520e604f0b167e9c85a46',1,'uel_pipeline::count()']]], - ['critical_2dsection_2eh_19',['critical-section.h',['../critical-section_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html deleted file mode 100644 index b61b96f..0000000 --- a/docs/html/search/all_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js deleted file mode 100644 index cb25f51..0000000 --- a/docs/html/search/all_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['destination_20',['destination',['../structuel__func__mapper.html#a847f834606bbc994068aaa93ed705e3c',1,'uel_func_mapper']]], - ['destructor_21',['destructor',['../structuel__autopool.html#a34dff758685ceefd0227aaf98eb66318',1,'uel_autopool']]], - ['detail_22',['detail',['../structevent.html#abcda7218789a4eac49e099cd895b042a',1,'event']]], - ['due_5ftime_23',['due_time',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#aded9e4913a031f9a4cc62ae362406b11',1,'event::uel_event_detail::uel_event_timer']]] -]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html deleted file mode 100644 index 06de155..0000000 --- a/docs/html/search/all_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js deleted file mode 100644 index 116d9b1..0000000 --- a/docs/html/search/all_4.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['event_24',['event',['../structevent.html',1,'']]], - ['event_2dloop_2eh_25',['event-loop.h',['../event-loop_8h.html',1,'']]], - ['event_2eh_26',['event.h',['../event_8h.html',1,'']]], - ['event_5floop_27',['event_loop',['../structuel__application.html#a206cef9bc1164781d91a883a38b0f0d9',1,'uel_application']]], - ['event_5fpool_28',['event_pool',['../structsyspools.html#ade1008e5647b9da5d4497d1d3dceadf1',1,'syspools']]], - ['event_5fpool_5fbuffer_29',['event_pool_buffer',['../structsyspools.html#a1a9c8bec00f4b19a1cea2d220860b89c',1,'syspools']]], - ['event_5fpool_5fqueue_5fbuffer_30',['event_pool_queue_buffer',['../structsyspools.html#ab54b76b022a0bff944791ca2ed3e157a',1,'syspools']]], - ['event_5fqueue_31',['event_queue',['../structsysqueues.html#a8ee3a87dc51095191300b5e90658d690',1,'sysqueues']]], - ['event_5fqueue_5fbuffer_32',['event_queue_buffer',['../structsysqueues.html#ae98fcac9a2822f2b2394a4c044f148a9',1,'sysqueues']]] -]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html deleted file mode 100644 index 2544c4e..0000000 --- a/docs/html/search/all_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js deleted file mode 100644 index ccd2e74..0000000 --- a/docs/html/search/all_5.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['first_5fsegment_33',['first_segment',['../structuel__promise.html#a6f892488ff6d7f0a6b90b128306c8498',1,'uel_promise']]], - ['function_34',['function',['../structuel__closure.html#a53af2a72baa02fe3d0b18e20aff59a66',1,'uel_closure']]], - ['functional_2eh_35',['functional.h',['../functional_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html deleted file mode 100644 index 43f14ea..0000000 --- a/docs/html/search/all_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js deleted file mode 100644 index a5a5ae3..0000000 --- a/docs/html/search/all_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['head_36',['head',['../structuel__llist.html#ab2e05ae8e0b0d0193011f8e5a4f903b6',1,'uel_llist']]] -]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html deleted file mode 100644 index af52f82..0000000 --- a/docs/html/search/all_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js deleted file mode 100644 index adeeee8..0000000 --- a/docs/html/search/all_7.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['if_5ffalse_37',['if_false',['../structuel__conditional.html#adb02d4c97ad9486edfb43dcb44ca2577',1,'uel_conditional']]], - ['if_5ftrue_38',['if_true',['../structuel__conditional.html#a49681bebb19750fea3e0ddcdc2e41ea9',1,'uel_conditional']]], - ['item_5fcount_39',['item_count',['../structuel__iterator__array.html#a514d0828182e9649d6285caddfb650c8',1,'uel_iterator_array']]], - ['item_5fsize_40',['item_size',['../structuel__iterator__array.html#a65622bdc18897601b6bc5da70ea44f09',1,'uel_iterator_array']]], - ['iterator_41',['iterator',['../structuel__func__mapper.html#a435db29ac7596f5b8c3f5c5735a2517f',1,'uel_func_mapper']]], - ['iterator_2eh_42',['iterator.h',['../iterator_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html deleted file mode 100644 index cf2b5df..0000000 --- a/docs/html/search/all_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js deleted file mode 100644 index c487e47..0000000 --- a/docs/html/search/all_8.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['last_5fsegment_43',['last_segment',['../structuel__promise.html#a18d4ef955a1110e9182d7fea5779a147',1,'uel_promise']]], - ['last_5fvalue_44',['last_value',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#a79d55d944dc3a1b83c8b09bb88ebb7ce',1,'event::uel_event_detail::uel_event_observer']]], - ['launch_45',['launch',['../structuel__module.html#a5a45b6478c665841c477f57386785cd4',1,'uel_module']]], - ['limit_46',['limit',['../structuel__func__mapper.html#abfb2f5ced405ae371069abfd131a1895',1,'uel_func_mapper']]], - ['linked_2dlist_2eh_47',['linked-list.h',['../linked-list_8h.html',1,'']]], - ['listener_48',['listener',['../unionevent_1_1uel__event__detail.html#a0be1ff74c4b46a39fb4a6dd320a9eb89',1,'event::uel_event_detail']]], - ['listeners_49',['listeners',['../structevent_1_1uel__event__detail_1_1uel__event__signal.html#ab003ff58199d9d50fa51b17532d75895',1,'event::uel_event_detail::uel_event_signal']]], - ['llist_5fnode_5fpool_50',['llist_node_pool',['../structsyspools.html#a8a333444479f17163fe541f84f88d8ce',1,'syspools']]], - ['llist_5fnode_5fpool_5fbuffer_51',['llist_node_pool_buffer',['../structsyspools.html#ab4b8e76d74b86c933227779f6dac2779',1,'syspools']]], - ['llist_5fnode_5fpool_5fqueue_5fbuffer_52',['llist_node_pool_queue_buffer',['../structsyspools.html#ae6d43157b64e89395ddf2ca93150c2de',1,'syspools']]] -]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html deleted file mode 100644 index 690785a..0000000 --- a/docs/html/search/all_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js deleted file mode 100644 index 78be922..0000000 --- a/docs/html/search/all_9.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['mask_53',['mask',['../structuel__cqueue.html#a3f0a994df09bb73f3545024a857dca78',1,'uel_cqueue']]], - ['module_2eh_54',['module.h',['../module_8h.html',1,'']]] -]; diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html deleted file mode 100644 index f2f3d3a..0000000 --- a/docs/html/search/all_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js deleted file mode 100644 index 526feba..0000000 --- a/docs/html/search/all_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['next_55',['next',['../structuel__iterator.html#a034411056043f9316d2b7458c2bcfdc3',1,'uel_iterator::next()'],['../structuel__llist__node.html#a7976a89a4700768e540bf5b164f2dc68',1,'uel_llist_node::next()'],['../structuel__promise__segment.html#aa2c791377649da1fa8bcfb73beff2b48',1,'uel_promise_segment::next()']]] -]; diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html deleted file mode 100644 index 14f3403..0000000 --- a/docs/html/search/all_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js deleted file mode 100644 index 0b6fe9a..0000000 --- a/docs/html/search/all_b.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['object_56',['object',['../structuel__autoptr.html#a215d58b3f6c7b953b0c60e8963252535',1,'uel_autoptr']]], - ['object_2dpool_2eh_57',['object-pool.h',['../object-pool_8h.html',1,'']]], - ['observer_58',['observer',['../unionevent_1_1uel__event__detail.html#a072f8eee18648e4fb7fc180043b65eac',1,'event::uel_event_detail']]], - ['observers_59',['observers',['../structuel__evloop.html#ac91617cd57a61785f2feb0748039836c',1,'uel_evloop']]] -]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html deleted file mode 100644 index da60ab8..0000000 --- a/docs/html/search/all_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js deleted file mode 100644 index ff9a4ef..0000000 --- a/docs/html/search/all_c.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['pause_5flist_60',['pause_list',['../structuel__scheduler.html#abcdd34ae1b4f2889ce0e301bc1f52826',1,'uel_scheduler']]], - ['pipeline_2eh_61',['pipeline.h',['../pipeline_8h.html',1,'']]], - ['pools_62',['pools',['../structuel__application.html#af74c95c7a5b2c751e83a3bb6a5404e99',1,'uel_application::pools()'],['../structuel__evloop.html#a47a9ebe4361677bce4f550f3d08b74bb',1,'uel_evloop::pools()'],['../structuel__scheduler.html#a599ff398356901589bed5930a77523c3',1,'uel_scheduler::pools()'],['../structuel__signal__relay.html#af0cc9622120868903e43eda29518433b',1,'uel_signal_relay::pools()']]], - ['promise_2eh_63',['promise.h',['../promise_8h.html',1,'']]], - ['promise_5fpool_64',['promise_pool',['../structuel__promise__store.html#acde6648fc7bed2bbbdac7df5fa0059f7',1,'uel_promise_store']]] -]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html deleted file mode 100644 index bc376fe..0000000 --- a/docs/html/search/all_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js deleted file mode 100644 index 1dbd263..0000000 --- a/docs/html/search/all_d.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['queue_65',['queue',['../structuel__objpool.html#a36c2a4bcb0eda229680daa4a03960506',1,'uel_objpool']]], - ['queues_66',['queues',['../structuel__application.html#a461dd6893eb70ee86bac7c43a9a86578',1,'uel_application::queues()'],['../structuel__evloop.html#aec967394710dd0b4b5184a8fd02d61a5',1,'uel_evloop::queues()'],['../structuel__scheduler.html#a962da3ed7102999d7379d2d26599160d',1,'uel_scheduler::queues()'],['../structuel__signal__relay.html#ae9438f0506aa721cbf56e917f58e0390',1,'uel_signal_relay::queues()']]] -]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html deleted file mode 100644 index 2e3c74d..0000000 --- a/docs/html/search/all_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js deleted file mode 100644 index b42820e..0000000 --- a/docs/html/search/all_e.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['registry_67',['registry',['../structuel__application.html#aa02469024d8619255c81f6aace13e36e',1,'uel_application']]], - ['registry_5fsize_68',['registry_size',['../structuel__application.html#a5f7f83e74289e75c9e54b26e67bae14d',1,'uel_application']]], - ['reject_69',['reject',['../structuel__promise__segment.html#af38e4bf5f784ba283e91657b7b483c22',1,'uel_promise_segment']]], - ['relay_70',['relay',['../structuel__application.html#a5f1ffb5e716efc10ffd63968098ce2eb',1,'uel_application']]], - ['relay_5fbuffer_71',['relay_buffer',['../structuel__application.html#a4dc1aab92e88e5776d1013b4eb35ec5e',1,'uel_application']]], - ['repeating_72',['repeating',['../structevent.html#a67fa1b9a469d09599d2931769862d07b',1,'event']]], - ['resolve_73',['resolve',['../structuel__promise__segment.html#acd843866b15e8f0b035189404d002044',1,'uel_promise_segment']]], - ['run_5fscheduler_74',['run_scheduler',['../structuel__application.html#ad66b5adaa8603cec1f8072d43cc582f5',1,'uel_application']]] -]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html deleted file mode 100644 index 246f8ab..0000000 --- a/docs/html/search/all_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js deleted file mode 100644 index 3b45b70..0000000 --- a/docs/html/search/all_f.js +++ /dev/null @@ -1,19 +0,0 @@ -var searchData= -[ - ['schedule_5fqueue_75',['schedule_queue',['../structsysqueues.html#a92e5df8975b6c6b1aa7f79df54da8565',1,'sysqueues']]], - ['schedule_5fqueue_5fbuffer_76',['schedule_queue_buffer',['../structsysqueues.html#a3f90eebf85af0e239358c276ea741917',1,'sysqueues']]], - ['scheduler_77',['scheduler',['../structuel__application.html#a977b88c48d61a8688773b062f74fc78c',1,'uel_application']]], - ['scheduler_2eh_78',['scheduler.h',['../scheduler_8h.html',1,'']]], - ['segment_5fpool_79',['segment_pool',['../structuel__promise__store.html#ae08a8b8b4a72f9e1d8cfb4d1c344317d',1,'uel_promise_store']]], - ['signal_80',['signal',['../unionevent_1_1uel__event__detail.html#a82ba97ed6ebbb9a86cecde4d0c48e4fc',1,'event::uel_event_detail']]], - ['signal_2eh_81',['signal.h',['../signal_8h.html',1,'']]], - ['signal_5fvector_82',['signal_vector',['../structuel__signal__relay.html#a264ee9199e913c30ec6487d258093324',1,'uel_signal_relay']]], - ['size_83',['size',['../structuel__cqueue.html#ad424eefbf635da1957a7c25a6b390a57',1,'uel_cqueue']]], - ['source_84',['source',['../structuel__autoptr.html#a32f472b4cef00ebc64db35493ac269d9',1,'uel_autoptr::source()'],['../structuel__promise.html#a2f753bbc2fcd30adcafac5de640143f5',1,'uel_promise::source()']]], - ['state_85',['state',['../structuel__promise.html#a678870a0975db700de0bbcb5d102aa4e',1,'uel_promise']]], - ['status_86',['status',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#a38f12f5dce7b8ef363fd5c8a786d3390',1,'event::uel_event_detail::uel_event_timer']]], - ['syspools_87',['syspools',['../structsyspools.html',1,'']]], - ['sysqueues_88',['sysqueues',['../structsysqueues.html',1,'']]], - ['system_2dpools_2eh_89',['system-pools.h',['../system-pools_8h.html',1,'']]], - ['system_2dqueues_2eh_90',['system-queues.h',['../system-queues_8h.html',1,'']]] -]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html deleted file mode 100644 index f7e4c14..0000000 --- a/docs/html/search/classes_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js deleted file mode 100644 index d970c40..0000000 --- a/docs/html/search/classes_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['event_285',['event',['../structevent.html',1,'']]] -]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html deleted file mode 100644 index c7ff4b3..0000000 --- a/docs/html/search/classes_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js deleted file mode 100644 index 4b773ad..0000000 --- a/docs/html/search/classes_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['syspools_286',['syspools',['../structsyspools.html',1,'']]], - ['sysqueues_287',['sysqueues',['../structsysqueues.html',1,'']]] -]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html deleted file mode 100644 index 0d1e8a0..0000000 --- a/docs/html/search/classes_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js deleted file mode 100644 index d2e3dca..0000000 --- a/docs/html/search/classes_2.js +++ /dev/null @@ -1,28 +0,0 @@ -var searchData= -[ - ['uel_5fapplication_288',['uel_application',['../structuel__application.html',1,'']]], - ['uel_5fautopool_289',['uel_autopool',['../structuel__autopool.html',1,'']]], - ['uel_5fautoptr_290',['uel_autoptr',['../structuel__autoptr.html',1,'']]], - ['uel_5fclosure_291',['uel_closure',['../structuel__closure.html',1,'']]], - ['uel_5fconditional_292',['uel_conditional',['../structuel__conditional.html',1,'']]], - ['uel_5fcqueue_293',['uel_cqueue',['../structuel__cqueue.html',1,'']]], - ['uel_5fevent_5fdetail_294',['uel_event_detail',['../unionevent_1_1uel__event__detail.html',1,'event']]], - ['uel_5fevent_5flistener_295',['uel_event_listener',['../structevent_1_1uel__event__detail_1_1uel__event__listener.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5fobserver_296',['uel_event_observer',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5fsignal_297',['uel_event_signal',['../structevent_1_1uel__event__detail_1_1uel__event__signal.html',1,'event::uel_event_detail']]], - ['uel_5fevent_5ftimer_298',['uel_event_timer',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html',1,'event::uel_event_detail']]], - ['uel_5fevloop_299',['uel_evloop',['../structuel__evloop.html',1,'']]], - ['uel_5ffunc_5fmapper_300',['uel_func_mapper',['../structuel__func__mapper.html',1,'']]], - ['uel_5fiterator_301',['uel_iterator',['../structuel__iterator.html',1,'']]], - ['uel_5fiterator_5farray_302',['uel_iterator_array',['../structuel__iterator__array.html',1,'']]], - ['uel_5fllist_303',['uel_llist',['../structuel__llist.html',1,'']]], - ['uel_5fllist_5fnode_304',['uel_llist_node',['../structuel__llist__node.html',1,'']]], - ['uel_5fmodule_305',['uel_module',['../structuel__module.html',1,'']]], - ['uel_5fobjpool_306',['uel_objpool',['../structuel__objpool.html',1,'']]], - ['uel_5fpipeline_307',['uel_pipeline',['../structuel__pipeline.html',1,'']]], - ['uel_5fpromise_308',['uel_promise',['../structuel__promise.html',1,'']]], - ['uel_5fpromise_5fsegment_309',['uel_promise_segment',['../structuel__promise__segment.html',1,'']]], - ['uel_5fpromise_5fstore_310',['uel_promise_store',['../structuel__promise__store.html',1,'']]], - ['uel_5fscheduler_311',['uel_scheduler',['../structuel__scheduler.html',1,'']]], - ['uel_5fsignal_5frelay_312',['uel_signal_relay',['../structuel__signal__relay.html',1,'']]] -]; diff --git a/docs/html/search/close.png b/docs/html/search/close.png deleted file mode 100644 index 9342d3dfeea7b7c4ee610987e717804b5a42ceb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN diff --git a/docs/html/search/defines_0.html b/docs/html/search/defines_0.html deleted file mode 100644 index 2deb369..0000000 --- a/docs/html/search/defines_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/defines_0.js b/docs/html/search/defines_0.js deleted file mode 100644 index f75c75c..0000000 --- a/docs/html/search/defines_0.js +++ /dev/null @@ -1,25 +0,0 @@ -var searchData= -[ - ['uel_5fautopool_5fbuffers_547',['UEL_AUTOPOOL_BUFFERS',['../automatic-pool_8h.html#a956766ef0a875886ce9cee1751fed842',1,'automatic-pool.h']]], - ['uel_5fautopool_5fbuffers_5fat_548',['UEL_AUTOPOOL_BUFFERS_AT',['../automatic-pool_8h.html#a06ddb8294f2f7ff72a458684df783479',1,'automatic-pool.h']]], - ['uel_5fautopool_5fbuffers_5fin_549',['UEL_AUTOPOOL_BUFFERS_IN',['../automatic-pool_8h.html#aed55c3bfece785d4bc440359c4a84697',1,'automatic-pool.h']]], - ['uel_5fcritical_5fenter_550',['UEL_CRITICAL_ENTER',['../critical-section_8h.html#a7c0f97308e835939cf0404b167cc188a',1,'critical-section.h']]], - ['uel_5fcritical_5fexit_551',['UEL_CRITICAL_EXIT',['../critical-section_8h.html#aebdb2b9597df1dac79b2fd88d58d6539',1,'critical-section.h']]], - ['uel_5fdeclare_5fautopool_5fbuffers_552',['UEL_DECLARE_AUTOPOOL_BUFFERS',['../automatic-pool_8h.html#a59c59798394f60a6e567954997cc8176',1,'automatic-pool.h']]], - ['uel_5fdeclare_5fobjpool_5fbuffers_553',['UEL_DECLARE_OBJPOOL_BUFFERS',['../object-pool_8h.html#a6f94946d39d323f7ea0f409962c59f1e',1,'object-pool.h']]], - ['uel_5fiterator_5fmap_5fboundless_554',['UEL_ITERATOR_MAP_BOUNDLESS',['../iterator_8h.html#a6f1cacb4e55d7a7e1b7d1a4ae9f8c2bb',1,'iterator.h']]], - ['uel_5fobjpool_5fbuffers_555',['UEL_OBJPOOL_BUFFERS',['../object-pool_8h.html#a623ea70a0df4cc76d0e65a99bc5c26c9',1,'object-pool.h']]], - ['uel_5fobjpool_5fbuffers_5fat_556',['UEL_OBJPOOL_BUFFERS_AT',['../object-pool_8h.html#aa3a5c0e14ab186fffed61c2b3d67405e',1,'object-pool.h']]], - ['uel_5fobjpool_5fbuffers_5fin_557',['UEL_OBJPOOL_BUFFERS_IN',['../object-pool_8h.html#ae25ae5d897163fb9104f4295f6fdf84b',1,'object-pool.h']]], - ['uel_5fpipeline_5fdeclare_558',['UEL_PIPELINE_DECLARE',['../pipeline_8h.html#a64c47a347b70a55627e1a66a9972890c',1,'pipeline.h']]], - ['uel_5fpromise_5fshortcuts_559',['UEL_PROMISE_SHORTCUTS',['../config_8h.html#a815cda45b611ac94d7b7b56bbeb12e1c',1,'config.h']]], - ['uel_5fsignal_5fmax_5flisteners_560',['UEL_SIGNAL_MAX_LISTENERS',['../config_8h.html#a7dec29ef683393c228642729b534fbf5',1,'config.h']]], - ['uel_5fsyspools_5fevent_5fpool_5fsize_561',['UEL_SYSPOOLS_EVENT_POOL_SIZE',['../system-pools_8h.html#a338ddcefe15ac9790e2c246817b2bd86',1,'system-pools.h']]], - ['uel_5fsyspools_5fevent_5fpool_5fsize_5flog2n_562',['UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N',['../config_8h.html#aacb6827b910a09fe40f49dfc22bc3a9b',1,'config.h']]], - ['uel_5fsyspools_5fllist_5fnode_5fpool_5fsize_563',['UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE',['../system-pools_8h.html#a5015b8b98a72b1642be11223dfd4b400',1,'system-pools.h']]], - ['uel_5fsyspools_5fllist_5fnode_5fpool_5fsize_5flog2n_564',['UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N',['../config_8h.html#ab3932a51e5254319c1d0feb178a5b164',1,'config.h']]], - ['uel_5fsysqueues_5fevent_5fqueue_5fsize_565',['UEL_SYSQUEUES_EVENT_QUEUE_SIZE',['../system-queues_8h.html#a1d616ec92aac7c521870c1ddfbfecba9',1,'system-queues.h']]], - ['uel_5fsysqueues_5fevent_5fqueue_5fsize_5flog2n_566',['UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N',['../config_8h.html#a89c8fac6285ec1a2ad001ee55d131e90',1,'config.h']]], - ['uel_5fsysqueues_5fschedule_5fqueue_5fsize_567',['UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE',['../system-queues_8h.html#a0a913dc860f0136e0633381c33d1821e',1,'system-queues.h']]], - ['uel_5fsysqueues_5fschedule_5fqueue_5fsize_5flog2n_568',['UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N',['../config_8h.html#af83cc01ed7c71a81a08be6340bff7f4b',1,'config.h']]] -]; diff --git a/docs/html/search/enums_0.html b/docs/html/search/enums_0.html deleted file mode 100644 index 9669700..0000000 --- a/docs/html/search/enums_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/enums_0.js b/docs/html/search/enums_0.js deleted file mode 100644 index e62d3b5..0000000 --- a/docs/html/search/enums_0.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['uel_5fapp_5fevent_540',['uel_app_event',['../application_8h.html#a335ab53567298b8918257c2970b388f2',1,'application.h']]], - ['uel_5fevent_5ftimer_5fstatus_541',['uel_event_timer_status',['../event_8h.html#ae586ca82fed67108457450a49661a4aa',1,'event.h']]], - ['uel_5fevent_5ftype_542',['uel_event_type',['../event_8h.html#a0a3805dfccf139ba6521d57e0b79fb60',1,'event.h']]], - ['uel_5fpromise_5fstate_543',['uel_promise_state',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856',1,'promise.h']]] -]; diff --git a/docs/html/search/enumvalues_0.html b/docs/html/search/enumvalues_0.html deleted file mode 100644 index 9286248..0000000 --- a/docs/html/search/enumvalues_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/enumvalues_0.js b/docs/html/search/enumvalues_0.js deleted file mode 100644 index 0552ad4..0000000 --- a/docs/html/search/enumvalues_0.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['uel_5fpromise_5fpending_544',['UEL_PROMISE_PENDING',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856ae619a3bfec8234d4302fbec8c2dfe6d2',1,'promise.h']]], - ['uel_5fpromise_5frejected_545',['UEL_PROMISE_REJECTED',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856ae137a12a3c564815d59e2548e304ab39',1,'promise.h']]], - ['uel_5fpromise_5fresolved_546',['UEL_PROMISE_RESOLVED',['../promise_8h.html#ac0201d84b1e362087d83bdb57a8e8856a5ef1eb9b1cdf442f77a5844d9cca3ce0',1,'promise.h']]] -]; diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html deleted file mode 100644 index 737608e..0000000 --- a/docs/html/search/files_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js deleted file mode 100644 index f9b32aa..0000000 --- a/docs/html/search/files_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['application_2eh_313',['application.h',['../application_8h.html',1,'']]], - ['automatic_2dpool_2eh_314',['automatic-pool.h',['../automatic-pool_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html deleted file mode 100644 index f27a62d..0000000 --- a/docs/html/search/files_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js deleted file mode 100644 index 751bfde..0000000 --- a/docs/html/search/files_1.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['circular_2dqueue_2eh_315',['circular-queue.h',['../circular-queue_8h.html',1,'']]], - ['closure_2eh_316',['closure.h',['../closure_8h.html',1,'']]], - ['conditional_2eh_317',['conditional.h',['../conditional_8h.html',1,'']]], - ['config_2eh_318',['config.h',['../config_8h.html',1,'']]], - ['critical_2dsection_2eh_319',['critical-section.h',['../critical-section_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html deleted file mode 100644 index a45066e..0000000 --- a/docs/html/search/files_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js deleted file mode 100644 index 7d5d9b1..0000000 --- a/docs/html/search/files_2.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['event_2dloop_2eh_320',['event-loop.h',['../event-loop_8h.html',1,'']]], - ['event_2eh_321',['event.h',['../event_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html deleted file mode 100644 index 1076bc5..0000000 --- a/docs/html/search/files_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js deleted file mode 100644 index c641f9f..0000000 --- a/docs/html/search/files_3.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['functional_2eh_322',['functional.h',['../functional_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html deleted file mode 100644 index e5cd7f4..0000000 --- a/docs/html/search/files_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js deleted file mode 100644 index c03c89b..0000000 --- a/docs/html/search/files_4.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['iterator_2eh_323',['iterator.h',['../iterator_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html deleted file mode 100644 index 2cc480f..0000000 --- a/docs/html/search/files_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js deleted file mode 100644 index 6a0f441..0000000 --- a/docs/html/search/files_5.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['linked_2dlist_2eh_324',['linked-list.h',['../linked-list_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html deleted file mode 100644 index 6510245..0000000 --- a/docs/html/search/files_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js deleted file mode 100644 index 2318aec..0000000 --- a/docs/html/search/files_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['module_2eh_325',['module.h',['../module_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html deleted file mode 100644 index 819f7b8..0000000 --- a/docs/html/search/files_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js deleted file mode 100644 index 611f60d..0000000 --- a/docs/html/search/files_7.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['object_2dpool_2eh_326',['object-pool.h',['../object-pool_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html deleted file mode 100644 index fa1a27f..0000000 --- a/docs/html/search/files_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js deleted file mode 100644 index cbc137f..0000000 --- a/docs/html/search/files_8.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['pipeline_2eh_327',['pipeline.h',['../pipeline_8h.html',1,'']]], - ['promise_2eh_328',['promise.h',['../promise_8h.html',1,'']]] -]; diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html deleted file mode 100644 index 3af3e47..0000000 --- a/docs/html/search/files_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js deleted file mode 100644 index 27a8e7e..0000000 --- a/docs/html/search/files_9.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['scheduler_2eh_329',['scheduler.h',['../scheduler_8h.html',1,'']]], - ['signal_2eh_330',['signal.h',['../signal_8h.html',1,'']]], - ['system_2dpools_2eh_331',['system-pools.h',['../system-pools_8h.html',1,'']]], - ['system_2dqueues_2eh_332',['system-queues.h',['../system-queues_8h.html',1,'']]] -]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html deleted file mode 100644 index e17c711..0000000 --- a/docs/html/search/functions_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js deleted file mode 100644 index 31a0bad..0000000 --- a/docs/html/search/functions_0.js +++ /dev/null @@ -1,123 +0,0 @@ -var searchData= -[ - ['uel_5fapp_5fenqueue_5fclosure_333',['uel_app_enqueue_closure',['../application_8h.html#a0ccd5d564ff573bcf157a0b21f58cca7',1,'application.h']]], - ['uel_5fapp_5finit_334',['uel_app_init',['../application_8h.html#ab221d8fc71af4fbf92525a7691b039ae',1,'application.h']]], - ['uel_5fapp_5fload_335',['uel_app_load',['../application_8h.html#aed8a446de669fcab5bc591fb28d3b5f6',1,'application.h']]], - ['uel_5fapp_5fobserve_336',['uel_app_observe',['../application_8h.html#ab581cf79189c8c2bdbb6b476ee91c761',1,'application.h']]], - ['uel_5fapp_5frequire_337',['uel_app_require',['../application_8h.html#a66ccab648cf052380fd7459748316e29',1,'application.h']]], - ['uel_5fapp_5frun_5fat_5fintervals_338',['uel_app_run_at_intervals',['../application_8h.html#a5f9d6a430845dc9bc6150346f8bb00ef',1,'application.h']]], - ['uel_5fapp_5frun_5flater_339',['uel_app_run_later',['../application_8h.html#a662ad4bd4836fe3790eefe21fd38ba0e',1,'application.h']]], - ['uel_5fapp_5ftick_340',['uel_app_tick',['../application_8h.html#adbbe5a9f65d8b1168d00c270cff52085',1,'application.h']]], - ['uel_5fapp_5fupdate_5ftimer_341',['uel_app_update_timer',['../application_8h.html#aac33288da9d190eda72d9598b877b7f7',1,'application.h']]], - ['uel_5fautopool_5falloc_342',['uel_autopool_alloc',['../automatic-pool_8h.html#aa4824c8fb0acb2059ee3c1ebf327712f',1,'automatic-pool.h']]], - ['uel_5fautopool_5finit_343',['uel_autopool_init',['../automatic-pool_8h.html#a32b26c65f4e2c7dfc733e14a0c06b746',1,'automatic-pool.h']]], - ['uel_5fautopool_5fis_5fempty_344',['uel_autopool_is_empty',['../automatic-pool_8h.html#aa94c4ff64e887bff5dfc5c8ef3fcd380',1,'automatic-pool.h']]], - ['uel_5fautopool_5fset_5fconstructor_345',['uel_autopool_set_constructor',['../automatic-pool_8h.html#ab00201d7a847f7844ba6a1aebe38384d',1,'automatic-pool.h']]], - ['uel_5fautopool_5fset_5fdestructor_346',['uel_autopool_set_destructor',['../automatic-pool_8h.html#a7f57eb19fffa1865c2a8b69aa61acc2b',1,'automatic-pool.h']]], - ['uel_5fautoptr_5fdealloc_347',['uel_autoptr_dealloc',['../automatic-pool_8h.html#affb23d5f2209456cfcb4228ae258f409',1,'automatic-pool.h']]], - ['uel_5fclosure_5fcreate_348',['uel_closure_create',['../closure_8h.html#adbc9cc1a9562693b06bfacd82d8ac978',1,'closure.h']]], - ['uel_5fclosure_5finvoke_349',['uel_closure_invoke',['../closure_8h.html#adcd44820dd3715e206fdf71800e8926c',1,'closure.h']]], - ['uel_5fconditional_5fapply_350',['uel_conditional_apply',['../conditional_8h.html#a09ded07bf4d8645615a25557a87c996d',1,'conditional.h']]], - ['uel_5fconditional_5finit_351',['uel_conditional_init',['../conditional_8h.html#acb6e7aa5cd25863e7a628d233a967412',1,'conditional.h']]], - ['uel_5fcqueue_5fclear_352',['uel_cqueue_clear',['../circular-queue_8h.html#a8df6047e956a849653bc6fe980706a07',1,'circular-queue.h']]], - ['uel_5fcqueue_5fcount_353',['uel_cqueue_count',['../circular-queue_8h.html#ad5efb7d3f6579abf94ae15c83cbcde40',1,'circular-queue.h']]], - ['uel_5fcqueue_5finit_354',['uel_cqueue_init',['../circular-queue_8h.html#acf451cae31642c456faada2501a4977e',1,'circular-queue.h']]], - ['uel_5fcqueue_5fis_5fempty_355',['uel_cqueue_is_empty',['../circular-queue_8h.html#abcd173ac88be8796deacdff15aa0e964',1,'circular-queue.h']]], - ['uel_5fcqueue_5fis_5ffull_356',['uel_cqueue_is_full',['../circular-queue_8h.html#a8ab1a212bf38b1578f9df769b65437e3',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpeek_5fhead_357',['uel_cqueue_peek_head',['../circular-queue_8h.html#a8d23ce639b076f853247a62670cfae30',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpeek_5ftail_358',['uel_cqueue_peek_tail',['../circular-queue_8h.html#aaf2d52fbe078fc80ef8e6119d12155ff',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpop_359',['uel_cqueue_pop',['../circular-queue_8h.html#a818331aa6bf56e977f7a95d996e9009d',1,'circular-queue.h']]], - ['uel_5fcqueue_5fpush_360',['uel_cqueue_push',['../circular-queue_8h.html#ae65acd13845cdd8e2492201538c2e968',1,'circular-queue.h']]], - ['uel_5fevent_5fconfig_5fclosure_361',['uel_event_config_closure',['../event_8h.html#a39a1530d0b0a93a8d810d0e37fe03160',1,'event.h']]], - ['uel_5fevent_5fconfig_5fobserver_362',['uel_event_config_observer',['../event_8h.html#afc174dfecb1d892499c2edd5a1f5f879',1,'event.h']]], - ['uel_5fevent_5fconfig_5fsignal_363',['uel_event_config_signal',['../event_8h.html#a2345bf8b0ddb2f59b4d5f35f0442d3cf',1,'event.h']]], - ['uel_5fevent_5fconfig_5fsignal_5flistener_364',['uel_event_config_signal_listener',['../event_8h.html#a4f2472662aa1378f437ac46dd85088e8',1,'event.h']]], - ['uel_5fevent_5fconfig_5ftimer_365',['uel_event_config_timer',['../event_8h.html#ac5daec069fa7e1e98044307c06e7bc85',1,'event.h']]], - ['uel_5fevent_5fobserver_5fcancel_366',['uel_event_observer_cancel',['../event_8h.html#ad3ebbe62dc7e5749c447b28238499af6',1,'event.h']]], - ['uel_5fevent_5ftimer_5fcancel_367',['uel_event_timer_cancel',['../event_8h.html#a306a18151beee2907b06895f86f8837d',1,'event.h']]], - ['uel_5fevent_5ftimer_5fpause_368',['uel_event_timer_pause',['../event_8h.html#af7fa468eacdeaf628daa64808721dabd',1,'event.h']]], - ['uel_5fevent_5ftimer_5fresume_369',['uel_event_timer_resume',['../event_8h.html#ae876c8b387f90c2a05a78a922ed8c9fb',1,'event.h']]], - ['uel_5fevloop_5fenqueue_5fclosure_370',['uel_evloop_enqueue_closure',['../event-loop_8h.html#a1d3464894f0281c7b1f4c9c18dddcaf4',1,'event-loop.h']]], - ['uel_5fevloop_5finit_371',['uel_evloop_init',['../event-loop_8h.html#abb6102256fd588588045a5743f07247d',1,'event-loop.h']]], - ['uel_5fevloop_5fobserve_372',['uel_evloop_observe',['../event-loop_8h.html#af08a755b11d666cdfa0b35446d007d13',1,'event-loop.h']]], - ['uel_5fevloop_5fobserve_5fonce_373',['uel_evloop_observe_once',['../event-loop_8h.html#a67264e6232817d1f23288856dbd1a3bb',1,'event-loop.h']]], - ['uel_5fevloop_5frun_374',['uel_evloop_run',['../event-loop_8h.html#ad5371df9faa7072e1fd11470448de901',1,'event-loop.h']]], - ['uel_5ffunc_5fall_375',['uel_func_all',['../functional_8h.html#a27004669ef5f883bdf911b6d3ec28995',1,'functional.h']]], - ['uel_5ffunc_5fany_376',['uel_func_any',['../functional_8h.html#ab04a6190af8139356acde68fbfa36d19',1,'functional.h']]], - ['uel_5ffunc_5fconditional_377',['uel_func_conditional',['../functional_8h.html#a97c901138cf1de87f9c5675d525d9842',1,'functional.h']]], - ['uel_5ffunc_5fcount_378',['uel_func_count',['../functional_8h.html#a8c8014f63f6b20972697e867734034d4',1,'functional.h']]], - ['uel_5ffunc_5ffind_379',['uel_func_find',['../functional_8h.html#ac70b7b1e40d33fc05249d800361d4303',1,'functional.h']]], - ['uel_5ffunc_5fforeach_380',['uel_func_foreach',['../functional_8h.html#abe102286c62fd56e5f16014282144467',1,'functional.h']]], - ['uel_5ffunc_5fmap_381',['uel_func_map',['../functional_8h.html#a03c3cc3260a99348d50c6f8de16248ba',1,'functional.h']]], - ['uel_5ffunc_5fmapper_5finit_382',['uel_func_mapper_init',['../functional_8h.html#a6623a1b2cdf37983fd6bebf2fd3570c4',1,'functional.h']]], - ['uel_5ffunc_5fnone_383',['uel_func_none',['../functional_8h.html#a0f10f9a3f9d0131952d3ffc6ff6cdac0',1,'functional.h']]], - ['uel_5ffunc_5fpipeline_384',['uel_func_pipeline',['../functional_8h.html#a59ef21c6c45d7f95955f2b49f7ebc241',1,'functional.h']]], - ['uel_5fiterator_5fall_385',['uel_iterator_all',['../iterator_8h.html#add9308f85bc2ecf781bca558c3e0ce50',1,'iterator.h']]], - ['uel_5fiterator_5fany_386',['uel_iterator_any',['../iterator_8h.html#a354f1f9b00d7033338dd2e5bd078da19',1,'iterator.h']]], - ['uel_5fiterator_5farray_5fcreate_387',['uel_iterator_array_create',['../iterator_8h.html#a0acc2751d0a555963f923fca73c0200a',1,'iterator.h']]], - ['uel_5fiterator_5farray_5fnext_388',['uel_iterator_array_next',['../iterator_8h.html#ae527f0990ab89f4f2e5ad26fd6fd90b6',1,'iterator.h']]], - ['uel_5fiterator_5fcount_389',['uel_iterator_count',['../iterator_8h.html#ae415aaa0c760c504717fcacfca3b294d',1,'iterator.h']]], - ['uel_5fiterator_5ffind_390',['uel_iterator_find',['../iterator_8h.html#ae77e788e5eae4d1ef812005ccc6d83e9',1,'iterator.h']]], - ['uel_5fiterator_5fforeach_391',['uel_iterator_foreach',['../iterator_8h.html#a590b4d91255d67d8878675503ec235f0',1,'iterator.h']]], - ['uel_5fiterator_5fllist_5fcreate_392',['uel_iterator_llist_create',['../iterator_8h.html#ae6d556c0d69311f1ea8deb05ddb722a4',1,'iterator.h']]], - ['uel_5fiterator_5fllist_5fnext_393',['uel_iterator_llist_next',['../iterator_8h.html#a52d44b593487736766981844ab9c381f',1,'iterator.h']]], - ['uel_5fiterator_5fmap_394',['uel_iterator_map',['../iterator_8h.html#a6ca0083f388164973c9d6f9518799b03',1,'iterator.h']]], - ['uel_5fiterator_5fnone_395',['uel_iterator_none',['../iterator_8h.html#a51d3573756956d42f7b67b5b9acc27a3',1,'iterator.h']]], - ['uel_5fllist_5finit_396',['uel_llist_init',['../linked-list_8h.html#a636d9d433df7fd53fc3138b6c77df75a',1,'linked-list.h']]], - ['uel_5fllist_5finsert_5fat_397',['uel_llist_insert_at',['../linked-list_8h.html#a2486cc91fa52a2fac1f0b0e7dc9a4562',1,'linked-list.h']]], - ['uel_5fllist_5fpeek_5fhead_398',['uel_llist_peek_head',['../linked-list_8h.html#ab663ff1457ec2ddbcba9a8f1c7399163',1,'linked-list.h']]], - ['uel_5fllist_5fpeek_5ftail_399',['uel_llist_peek_tail',['../linked-list_8h.html#a33fca34e728f3524f6ebd328b96a1c80',1,'linked-list.h']]], - ['uel_5fllist_5fpop_5fhead_400',['uel_llist_pop_head',['../linked-list_8h.html#aeb330b9c1971e23248fc39d918979503',1,'linked-list.h']]], - ['uel_5fllist_5fpop_5ftail_401',['uel_llist_pop_tail',['../linked-list_8h.html#ac4f27f948e355936eede9ef5ef808d43',1,'linked-list.h']]], - ['uel_5fllist_5fpush_5fhead_402',['uel_llist_push_head',['../linked-list_8h.html#a0a98f53f55f86adb45e4f0f357d748a8',1,'linked-list.h']]], - ['uel_5fllist_5fpush_5ftail_403',['uel_llist_push_tail',['../linked-list_8h.html#a2ab3add326e3c3a382386786fa5bbf63',1,'linked-list.h']]], - ['uel_5fllist_5fremove_404',['uel_llist_remove',['../linked-list_8h.html#acdb87dcd0d23db28be24297a7f7db7b0',1,'linked-list.h']]], - ['uel_5fllist_5fremove_5fwhile_405',['uel_llist_remove_while',['../linked-list_8h.html#a55def6b7dd819e8e9798787f781d00b7',1,'linked-list.h']]], - ['uel_5fmodule_5fconfig_406',['uel_module_config',['../module_8h.html#aa20d61157d25ebdb6abd2d774e2035d9',1,'module.h']]], - ['uel_5fmodule_5finit_407',['uel_module_init',['../module_8h.html#a3a1d7dc04cf2b7c5c84a61cfd5056772',1,'module.h']]], - ['uel_5fmodule_5flaunch_408',['uel_module_launch',['../module_8h.html#a144a21cefd8d58d672b02b21def8c627',1,'module.h']]], - ['uel_5fnop_409',['uel_nop',['../closure_8h.html#a1f88fc773dbcea710594c7175d3a4ac3',1,'closure.h']]], - ['uel_5fobjpool_5facquire_410',['uel_objpool_acquire',['../object-pool_8h.html#a54248e0810ccb791a8ff82d3de8fc6c5',1,'object-pool.h']]], - ['uel_5fobjpool_5finit_411',['uel_objpool_init',['../object-pool_8h.html#ab49dd047b6e4fcc0939dfd651e3b3666',1,'object-pool.h']]], - ['uel_5fobjpool_5fis_5fempty_412',['uel_objpool_is_empty',['../object-pool_8h.html#ae116db7f19b0971e6781e375361265ce',1,'object-pool.h']]], - ['uel_5fobjpool_5frelease_413',['uel_objpool_release',['../object-pool_8h.html#af4370a164b82e436749fbc9f8af9a114',1,'object-pool.h']]], - ['uel_5fpipeline_5fapply_414',['uel_pipeline_apply',['../pipeline_8h.html#a54df79756518430d753961735c93d270',1,'pipeline.h']]], - ['uel_5fpipeline_5finit_415',['uel_pipeline_init',['../pipeline_8h.html#ad7cfa65777a90f537ab031b6d8dac028',1,'pipeline.h']]], - ['uel_5fpromise_5fafter_416',['uel_promise_after',['../promise_8h.html#a4b1b8ee1101104f1beaa782ef630767f',1,'promise.h']]], - ['uel_5fpromise_5falways_417',['uel_promise_always',['../promise_8h.html#a6a932817fcd43d5eaa2723b8c34132ff',1,'promise.h']]], - ['uel_5fpromise_5fcatch_418',['uel_promise_catch',['../promise_8h.html#a550561c65f5abb38bc5c3b25083dd468',1,'promise.h']]], - ['uel_5fpromise_5fcreate_419',['uel_promise_create',['../promise_8h.html#a5c0cdf2e971bf738362af1761c729bd4',1,'promise.h']]], - ['uel_5fpromise_5fdestroy_420',['uel_promise_destroy',['../promise_8h.html#ac43ce3e3316581da32cf3e21c15901f0',1,'promise.h']]], - ['uel_5fpromise_5fdestroyer_421',['uel_promise_destroyer',['../promise_8h.html#a9b68547bf7ac1a5860b165a4638bcc51',1,'promise.h']]], - ['uel_5fpromise_5freject_422',['uel_promise_reject',['../promise_8h.html#a2e904cfb182cb5619b0a31790fca697e',1,'promise.h']]], - ['uel_5fpromise_5frejecter_423',['uel_promise_rejecter',['../promise_8h.html#a09b820cf5093f6979da34cbe6faa1787',1,'promise.h']]], - ['uel_5fpromise_5fresettle_424',['uel_promise_resettle',['../promise_8h.html#a2d226c4ed1a94964db50dbb5a7f958df',1,'promise.h']]], - ['uel_5fpromise_5fresolve_425',['uel_promise_resolve',['../promise_8h.html#abe5aae85467a9af06b580df74aeedb8c',1,'promise.h']]], - ['uel_5fpromise_5fresolver_426',['uel_promise_resolver',['../promise_8h.html#acffa84389150a36442905a6f89cb827b',1,'promise.h']]], - ['uel_5fpromise_5fstore_5fcreate_427',['uel_promise_store_create',['../promise_8h.html#a4e3a7f9f0d154d4a2fa1c17520bd5561',1,'promise.h']]], - ['uel_5fpromise_5fthen_428',['uel_promise_then',['../promise_8h.html#abb34042cccffccafefb813a902ec8389',1,'promise.h']]], - ['uel_5fsch_5finit_429',['uel_sch_init',['../scheduler_8h.html#a7f4ae225987bb741ca824c83a96ce138',1,'scheduler.h']]], - ['uel_5fsch_5fmanage_5ftimers_430',['uel_sch_manage_timers',['../scheduler_8h.html#a2666a61c55a518fd602cee03a014ed10',1,'scheduler.h']]], - ['uel_5fsch_5frun_5fat_5fintervals_431',['uel_sch_run_at_intervals',['../scheduler_8h.html#a6a993056042a7649e1e7375eb2bb588d',1,'scheduler.h']]], - ['uel_5fsch_5frun_5flater_432',['uel_sch_run_later',['../scheduler_8h.html#ad5909fddc1856cc1b980a0445602c67c',1,'scheduler.h']]], - ['uel_5fsch_5fupdate_5ftimer_433',['uel_sch_update_timer',['../scheduler_8h.html#a0a5a89adf45a470aed0e39925a256ea2',1,'scheduler.h']]], - ['uel_5fsignal_5femit_434',['uel_signal_emit',['../signal_8h.html#af849f4effe2577efe439387d3a8a710a',1,'signal.h']]], - ['uel_5fsignal_5flisten_435',['uel_signal_listen',['../signal_8h.html#ac11a6acd9237d30551bc0dc8ba406189',1,'signal.h']]], - ['uel_5fsignal_5flisten_5fonce_436',['uel_signal_listen_once',['../signal_8h.html#a6d59d4a7b4c0c5f6b1d271ed6e8a8212',1,'signal.h']]], - ['uel_5fsignal_5freject_5fpromise_437',['uel_signal_reject_promise',['../signal_8h.html#a9dafdd735ff9f06ddc2b0c80862e8af6',1,'signal.h']]], - ['uel_5fsignal_5frelay_5finit_438',['uel_signal_relay_init',['../signal_8h.html#a8eaa68abe3e288c96eb0ae88d244364f',1,'signal.h']]], - ['uel_5fsignal_5fresolve_5fpromise_439',['uel_signal_resolve_promise',['../signal_8h.html#a1b208dd90b74c52c2775518c242f7c8a',1,'signal.h']]], - ['uel_5fsignal_5funlisten_440',['uel_signal_unlisten',['../signal_8h.html#a3fb31014f6cec7acf29e7de4b66fe531',1,'signal.h']]], - ['uel_5fsyspools_5facquire_5fevent_441',['uel_syspools_acquire_event',['../system-pools_8h.html#afa790328d17062994bc3f958b9e96ea4',1,'system-pools.h']]], - ['uel_5fsyspools_5facquire_5fllist_5fnode_442',['uel_syspools_acquire_llist_node',['../system-pools_8h.html#a11d44d4872dd5110c3573e0dd8cfc9d3',1,'system-pools.h']]], - ['uel_5fsyspools_5finit_443',['uel_syspools_init',['../system-pools_8h.html#a737df9d7ca7c587711dc8c59d9f1c277',1,'system-pools.h']]], - ['uel_5fsyspools_5frelease_5fevent_444',['uel_syspools_release_event',['../system-pools_8h.html#a52991a37f5e0da28ecc6161ed8932911',1,'system-pools.h']]], - ['uel_5fsyspools_5frelease_5fllist_5fnode_445',['uel_syspools_release_llist_node',['../system-pools_8h.html#ae392a6e20954e33629d67a5729c9de02',1,'system-pools.h']]], - ['uel_5fsysqueues_5fcount_5fenqueued_5fevents_446',['uel_sysqueues_count_enqueued_events',['../system-queues_8h.html#a7caa3edc1266d927d334b6b85af5ec95',1,'system-queues.h']]], - ['uel_5fsysqueues_5fcount_5fscheduled_5fevents_447',['uel_sysqueues_count_scheduled_events',['../system-queues_8h.html#a50a5ee20919b0362d640b3816a2ed191',1,'system-queues.h']]], - ['uel_5fsysqueues_5fenqueue_5fevent_448',['uel_sysqueues_enqueue_event',['../system-queues_8h.html#ac58c61b4b8d432898a6c5b2a47b7d197',1,'system-queues.h']]], - ['uel_5fsysqueues_5fget_5fenqueued_5fevent_449',['uel_sysqueues_get_enqueued_event',['../system-queues_8h.html#a897b9899eefbe90ac11e651b5117bfd3',1,'system-queues.h']]], - ['uel_5fsysqueues_5fget_5fscheduled_5fevent_450',['uel_sysqueues_get_scheduled_event',['../system-queues_8h.html#a1730d1f7a7e86a3a79df40938fa9d735',1,'system-queues.h']]], - ['uel_5fsysqueues_5finit_451',['uel_sysqueues_init',['../system-queues_8h.html#aa988e6daddfd00129d56c1db350edc5a',1,'system-queues.h']]], - ['uel_5fsysqueues_5fschedule_5fevent_452',['uel_sysqueues_schedule_event',['../system-queues_8h.html#ac14ac33abf67b93d8904e5ebb1218028',1,'system-queues.h']]] -]; diff --git a/docs/html/search/mag_sel.png b/docs/html/search/mag_sel.png deleted file mode 100644 index 39c0ed52a25dd9d080ee0d42ae6c6042bdfa04d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465 zcmeAS@N?(olHy`uVBq!ia0vp^B0wz6!2%?$TA$hhDVB6cUq=Rpjs4tz5?O(Kg=CK) zUj~NU84L`?eGCi_EEpJ?t}-xGu`@87+QPtK?83kxQ`TapwHK(CDaqU2h2ejD|C#+j z9%q3^WHAE+w=f7ZGR&GI0Tg5}@$_|Nf5gMiEhFgvHvB$N=!mC_V~EE2vzPXI9ZnEo zd+1zHor@dYLod2Y{ z@R$7$Z!PXTbY$|@#T!bMzm?`b<(R`cbw(gxJHzu zB$lLFB^RXvDF!10LknF)BV7aY5JN*NBMU1-b8Q0yD+2>vd*|CI8glbfGSez?Ylunu RoetE%;OXk;vd$@?2>>CYplSdB diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html deleted file mode 100644 index 4377320..0000000 --- a/docs/html/search/nomatches.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - -
    -
    No Matches
    -
    - - diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html deleted file mode 100644 index 9a6a29a..0000000 --- a/docs/html/search/pages_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js deleted file mode 100644 index 76925d4..0000000 --- a/docs/html/search/pages_0.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['µevloop_20_3cimg_20src_3d_22https_3a_2f_2fgithub_2ecom_2fandsmedeiros_2fuevloop_2fworkflows_2fc_2fc_2b_2b_2520ci_2fbadge_2esvg_3fevent_3dpush_22_20alt_3d_22c_2fc_2b_2b_20ci_22_2f_3e_569',['µEvLoop <img src="https://github.com/andsmedeiros/uevloop/workflows/C/C++%20CI/badge.svg?event=push" alt="C/C++ CI"/>',['../index.html',1,'']]] -]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css deleted file mode 100644 index 3cf9df9..0000000 --- a/docs/html/search/search.css +++ /dev/null @@ -1,271 +0,0 @@ -/*---------------- Search Box */ - -#FSearchBox { - float: left; -} - -#MSearchBox { - white-space : nowrap; - float: none; - margin-top: 8px; - right: 0px; - width: 170px; - height: 24px; - z-index: 102; -} - -#MSearchBox .left -{ - display:block; - position:absolute; - left:10px; - width:20px; - height:19px; - background:url('search_l.png') no-repeat; - background-position:right; -} - -#MSearchSelect { - display:block; - position:absolute; - width:20px; - height:19px; -} - -.left #MSearchSelect { - left:4px; -} - -.right #MSearchSelect { - right:5px; -} - -#MSearchField { - display:block; - position:absolute; - height:19px; - background:url('search_m.png') repeat-x; - border:none; - width:115px; - margin-left:20px; - padding-left:4px; - color: #909090; - outline: none; - font: 9pt Arial, Verdana, sans-serif; - -webkit-border-radius: 0px; -} - -#FSearchBox #MSearchField { - margin-left:15px; -} - -#MSearchBox .right { - display:block; - position:absolute; - right:10px; - top:8px; - width:20px; - height:19px; - background:url('search_r.png') no-repeat; - background-position:left; -} - -#MSearchClose { - display: none; - position: absolute; - top: 4px; - background : none; - border: none; - margin: 0px 4px 0px 0px; - padding: 0px 0px; - outline: none; -} - -.left #MSearchClose { - left: 6px; -} - -.right #MSearchClose { - right: 2px; -} - -.MSearchBoxActive #MSearchField { - color: #000000; -} - -/*---------------- Search filter selection */ - -#MSearchSelectWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #90A5CE; - background-color: #F9FAFC; - z-index: 10001; - padding-top: 4px; - padding-bottom: 4px; - -moz-border-radius: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); -} - -.SelectItem { - font: 8pt Arial, Verdana, sans-serif; - padding-left: 2px; - padding-right: 12px; - border: 0px; -} - -span.SelectionMark { - margin-right: 4px; - font-family: monospace; - outline-style: none; - text-decoration: none; -} - -a.SelectItem { - display: block; - outline-style: none; - color: #000000; - text-decoration: none; - padding-left: 6px; - padding-right: 12px; -} - -a.SelectItem:focus, -a.SelectItem:active { - color: #000000; - outline-style: none; - text-decoration: none; -} - -a.SelectItem:hover { - color: #FFFFFF; - background-color: #3D578C; - outline-style: none; - text-decoration: none; - cursor: pointer; - display: block; -} - -/*---------------- Search results window */ - -iframe#MSearchResults { - width: 60ex; - height: 15em; -} - -#MSearchResultsWindow { - display: none; - position: absolute; - left: 0; top: 0; - border: 1px solid #000; - background-color: #EEF1F7; - z-index:10000; -} - -/* ----------------------------------- */ - - -#SRIndex { - clear:both; - padding-bottom: 15px; -} - -.SREntry { - font-size: 10pt; - padding-left: 1ex; -} - -.SRPage .SREntry { - font-size: 8pt; - padding: 1px 5px; -} - -body.SRPage { - margin: 5px 2px; -} - -.SRChildren { - padding-left: 3ex; padding-bottom: .5em -} - -.SRPage .SRChildren { - display: none; -} - -.SRSymbol { - font-weight: bold; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRScope { - display: block; - color: #425E97; - font-family: Arial, Verdana, sans-serif; - text-decoration: none; - outline: none; -} - -a.SRSymbol:focus, a.SRSymbol:active, -a.SRScope:focus, a.SRScope:active { - text-decoration: underline; -} - -span.SRScope { - padding-left: 4px; -} - -.SRPage .SRStatus { - padding: 2px 5px; - font-size: 8pt; - font-style: italic; -} - -.SRResult { - display: none; -} - -DIV.searchresults { - margin-left: 10px; - margin-right: 10px; -} - -/*---------------- External search page results */ - -.searchresult { - background-color: #F0F3F8; -} - -.pages b { - color: white; - padding: 5px 5px 3px 5px; - background-image: url("../tab_a.png"); - background-repeat: repeat-x; - text-shadow: 0 1px 1px #000000; -} - -.pages { - line-height: 17px; - margin-left: 4px; - text-decoration: none; -} - -.hl { - font-weight: bold; -} - -#searchresults { - margin-bottom: 20px; -} - -.searchpages { - margin-top: 10px; -} - diff --git a/docs/html/search/search.js b/docs/html/search/search.js deleted file mode 100644 index a554ab9..0000000 --- a/docs/html/search/search.js +++ /dev/null @@ -1,814 +0,0 @@ -/* - @licstart The following is the entire license notice for the - JavaScript code in this file. - - Copyright (C) 1997-2017 by Dimitri van Heesch - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - - @licend The above is the entire license notice - for the JavaScript code in this file - */ -function convertToId(search) -{ - var result = ''; - for (i=0;i do a search - { - this.Search(); - } - } - - this.OnSearchSelectKey = function(evt) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==40 && this.searchIndex0) // Up - { - this.searchIndex--; - this.OnSelectItem(this.searchIndex); - } - else if (e.keyCode==13 || e.keyCode==27) - { - this.OnSelectItem(this.searchIndex); - this.CloseSelectionWindow(); - this.DOMSearchField().focus(); - } - return false; - } - - // --------- Actions - - // Closes the results window. - this.CloseResultsWindow = function() - { - this.DOMPopupSearchResultsWindow().style.display = 'none'; - this.DOMSearchClose().style.display = 'none'; - this.Activate(false); - } - - this.CloseSelectionWindow = function() - { - this.DOMSearchSelectWindow().style.display = 'none'; - } - - // Performs a search. - this.Search = function() - { - this.keyTimeout = 0; - - // strip leading whitespace - var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); - - var code = searchValue.toLowerCase().charCodeAt(0); - var idxChar = searchValue.substr(0, 1).toLowerCase(); - if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair - { - idxChar = searchValue.substr(0, 2); - } - - var resultsPage; - var resultsPageWithSearch; - var hasResultsPage; - - var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); - if (idx!=-1) - { - var hexCode=idx.toString(16); - resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; - resultsPageWithSearch = resultsPage+'?'+escape(searchValue); - hasResultsPage = true; - } - else // nothing available for this search term - { - resultsPage = this.resultsPath + '/nomatches.html'; - resultsPageWithSearch = resultsPage; - hasResultsPage = false; - } - - window.frames.MSearchResults.location = resultsPageWithSearch; - var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); - - if (domPopupSearchResultsWindow.style.display!='block') - { - var domSearchBox = this.DOMSearchBox(); - this.DOMSearchClose().style.display = 'inline'; - if (this.insideFrame) - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - domPopupSearchResultsWindow.style.position = 'relative'; - domPopupSearchResultsWindow.style.display = 'block'; - var width = document.body.clientWidth - 8; // the -8 is for IE :-( - domPopupSearchResultsWindow.style.width = width + 'px'; - domPopupSearchResults.style.width = width + 'px'; - } - else - { - var domPopupSearchResults = this.DOMPopupSearchResults(); - var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; - var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; - domPopupSearchResultsWindow.style.display = 'block'; - left -= domPopupSearchResults.offsetWidth; - domPopupSearchResultsWindow.style.top = top + 'px'; - domPopupSearchResultsWindow.style.left = left + 'px'; - } - } - - this.lastSearchValue = searchValue; - this.lastResultsPage = resultsPage; - } - - // -------- Activation Functions - - // Activates or deactivates the search panel, resetting things to - // their default values if necessary. - this.Activate = function(isActive) - { - if (isActive || // open it - this.DOMPopupSearchResultsWindow().style.display == 'block' - ) - { - this.DOMSearchBox().className = 'MSearchBoxActive'; - - var searchField = this.DOMSearchField(); - - if (searchField.value == this.searchLabel) // clear "Search" term upon entry - { - searchField.value = ''; - this.searchActive = true; - } - } - else if (!isActive) // directly remove the panel - { - this.DOMSearchBox().className = 'MSearchBoxInactive'; - this.DOMSearchField().value = this.searchLabel; - this.searchActive = false; - this.lastSearchValue = '' - this.lastResultsPage = ''; - } - } -} - -// ----------------------------------------------------------------------- - -// The class that handles everything on the search results page. -function SearchResults(name) -{ - // The number of matches from the last run of . - this.lastMatchCount = 0; - this.lastKey = 0; - this.repeatOn = false; - - // Toggles the visibility of the passed element ID. - this.FindChildElement = function(id) - { - var parentElement = document.getElementById(id); - var element = parentElement.firstChild; - - while (element && element!=parentElement) - { - if (element.nodeName == 'DIV' && element.className == 'SRChildren') - { - return element; - } - - if (element.nodeName == 'DIV' && element.hasChildNodes()) - { - element = element.firstChild; - } - else if (element.nextSibling) - { - element = element.nextSibling; - } - else - { - do - { - element = element.parentNode; - } - while (element && element!=parentElement && !element.nextSibling); - - if (element && element!=parentElement) - { - element = element.nextSibling; - } - } - } - } - - this.Toggle = function(id) - { - var element = this.FindChildElement(id); - if (element) - { - if (element.style.display == 'block') - { - element.style.display = 'none'; - } - else - { - element.style.display = 'block'; - } - } - } - - // Searches for the passed string. If there is no parameter, - // it takes it from the URL query. - // - // Always returns true, since other documents may try to call it - // and that may or may not be possible. - this.Search = function(search) - { - if (!search) // get search word from URL - { - search = window.location.search; - search = search.substring(1); // Remove the leading '?' - search = unescape(search); - } - - search = search.replace(/^ +/, ""); // strip leading spaces - search = search.replace(/ +$/, ""); // strip trailing spaces - search = search.toLowerCase(); - search = convertToId(search); - - var resultRows = document.getElementsByTagName("div"); - var matches = 0; - - var i = 0; - while (i < resultRows.length) - { - var row = resultRows.item(i); - if (row.className == "SRResult") - { - var rowMatchName = row.id.toLowerCase(); - rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' - - if (search.length<=rowMatchName.length && - rowMatchName.substr(0, search.length)==search) - { - row.style.display = 'block'; - matches++; - } - else - { - row.style.display = 'none'; - } - } - i++; - } - document.getElementById("Searching").style.display='none'; - if (matches == 0) // no results - { - document.getElementById("NoMatches").style.display='block'; - } - else // at least one result - { - document.getElementById("NoMatches").style.display='none'; - } - this.lastMatchCount = matches; - return true; - } - - // return the first item with index index or higher that is visible - this.NavNext = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index++; - } - return focusItem; - } - - this.NavPrev = function(index) - { - var focusItem; - while (1) - { - var focusName = 'Item'+index; - focusItem = document.getElementById(focusName); - if (focusItem && focusItem.parentNode.parentNode.style.display=='block') - { - break; - } - else if (!focusItem) // last element - { - break; - } - focusItem=null; - index--; - } - return focusItem; - } - - this.ProcessKeys = function(e) - { - if (e.type == "keydown") - { - this.repeatOn = false; - this.lastKey = e.keyCode; - } - else if (e.type == "keypress") - { - if (!this.repeatOn) - { - if (this.lastKey) this.repeatOn = true; - return false; // ignore first keypress after keydown - } - } - else if (e.type == "keyup") - { - this.lastKey = 0; - this.repeatOn = false; - } - return this.lastKey!=0; - } - - this.Nav = function(evt,itemIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - var newIndex = itemIndex-1; - var focusItem = this.NavPrev(newIndex); - if (focusItem) - { - var child = this.FindChildElement(focusItem.parentNode.parentNode.id); - if (child && child.style.display == 'block') // children visible - { - var n=0; - var tmpElem; - while (1) // search for last child - { - tmpElem = document.getElementById('Item'+newIndex+'_c'+n); - if (tmpElem) - { - focusItem = tmpElem; - } - else // found it! - { - break; - } - n++; - } - } - } - if (focusItem) - { - focusItem.focus(); - } - else // return focus to search field - { - parent.document.getElementById("MSearchField").focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = itemIndex+1; - var focusItem; - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem && elem.style.display == 'block') // children visible - { - focusItem = document.getElementById('Item'+itemIndex+'_c0'); - } - if (!focusItem) focusItem = this.NavNext(newIndex); - if (focusItem) focusItem.focus(); - } - else if (this.lastKey==39) // Right - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'block'; - } - else if (this.lastKey==37) // Left - { - var item = document.getElementById('Item'+itemIndex); - var elem = this.FindChildElement(item.parentNode.parentNode.id); - if (elem) elem.style.display = 'none'; - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } - - this.NavChild = function(evt,itemIndex,childIndex) - { - var e = (evt) ? evt : window.event; // for IE - if (e.keyCode==13) return true; - if (!this.ProcessKeys(e)) return false; - - if (this.lastKey==38) // Up - { - if (childIndex>0) - { - var newIndex = childIndex-1; - document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); - } - else // already at first child, jump to parent - { - document.getElementById('Item'+itemIndex).focus(); - } - } - else if (this.lastKey==40) // Down - { - var newIndex = childIndex+1; - var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); - if (!elem) // last child, jump to parent next parent - { - elem = this.NavNext(itemIndex+1); - } - if (elem) - { - elem.focus(); - } - } - else if (this.lastKey==27) // Escape - { - parent.searchBox.CloseResultsWindow(); - parent.document.getElementById("MSearchField").focus(); - } - else if (this.lastKey==13) // Enter - { - return true; - } - return false; - } -} - -function setKeyActions(elem,action) -{ - elem.setAttribute('onkeydown',action); - elem.setAttribute('onkeypress',action); - elem.setAttribute('onkeyup',action); -} - -function setClassAttr(elem,attr) -{ - elem.setAttribute('class',attr); - elem.setAttribute('className',attr); -} - -function createResults() -{ - var results = document.getElementById("SRResults"); - for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png deleted file mode 100644 index 1af5d21ee13e070d7600f1c4657fde843b953a69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js deleted file mode 100644 index ea2806b..0000000 --- a/docs/html/search/searchdata.js +++ /dev/null @@ -1,42 +0,0 @@ -var indexSectionsWithContent = -{ - 0: "abcdefhilmnopqrstuvwÂ", - 1: "esu", - 2: "acefilmops", - 3: "u", - 4: "abcdefhilmnopqrstuvw", - 5: "u", - 6: "u", - 7: "u", - 8: "u", - 9: "Â" -}; - -var indexSectionNames = -{ - 0: "all", - 1: "classes", - 2: "files", - 3: "functions", - 4: "variables", - 5: "typedefs", - 6: "enums", - 7: "enumvalues", - 8: "defines", - 9: "pages" -}; - -var indexSectionLabels = -{ - 0: "All", - 1: "Data Structures", - 2: "Files", - 3: "Functions", - 4: "Variables", - 5: "Typedefs", - 6: "Enumerations", - 7: "Enumerator", - 8: "Macros", - 9: "Pages" -}; - diff --git a/docs/html/search/typedefs_0.html b/docs/html/search/typedefs_0.html deleted file mode 100644 index 376db47..0000000 --- a/docs/html/search/typedefs_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/typedefs_0.js b/docs/html/search/typedefs_0.js deleted file mode 100644 index bef97f8..0000000 --- a/docs/html/search/typedefs_0.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['uel_5fapp_5fevent_5ft_530',['uel_app_event_t',['../application_8h.html#a138e72d6aced8d43e9a2d0c63c830080',1,'application.h']]], - ['uel_5fautoptr_5ft_531',['uel_autoptr_t',['../automatic-pool_8h.html#a83a2aef2df919bea22dd489c0a5403fd',1,'automatic-pool.h']]], - ['uel_5fclosure_5ffunction_5ft_532',['uel_closure_function_t',['../closure_8h.html#a04cc5d51a9c86aeedcd6641b43dd8564',1,'closure.h']]], - ['uel_5fevent_5ftimer_5fstatus_5ft_533',['uel_event_timer_status_t',['../event_8h.html#ada757ae763328a1774f87efe179e0d0d',1,'event.h']]], - ['uel_5fevent_5ftype_5ft_534',['uel_event_type_t',['../event_8h.html#a04647f8821482fc8f635924fc2f1539b',1,'event.h']]], - ['uel_5fiterator_5fllist_5ft_535',['uel_iterator_llist_t',['../iterator_8h.html#a0646f93de558b7d6c5c312c010cf7254',1,'iterator.h']]], - ['uel_5fmodule_5fhook_5ft_536',['uel_module_hook_t',['../module_8h.html#ad589448a7bcdb1d7cce57f42346a1657',1,'module.h']]], - ['uel_5fpromise_5fstate_5ft_537',['uel_promise_state_t',['../promise_8h.html#a95fdddb2c4ccf80657feebb0d4c9adfb',1,'promise.h']]], - ['uel_5fsignal_5flistener_5ft_538',['uel_signal_listener_t',['../signal_8h.html#acf4ce9806bae5489706f0409f0a58067',1,'signal.h']]], - ['uel_5fsignal_5ft_539',['uel_signal_t',['../signal_8h.html#a4321d8b0f2c6bc3c0cc143e1bb1d1a2b',1,'signal.h']]] -]; diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html deleted file mode 100644 index bf3eba5..0000000 --- a/docs/html/search/variables_0.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js deleted file mode 100644 index 8fa2179..0000000 --- a/docs/html/search/variables_0.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['app_453',['app',['../structuel__module.html#a05f6845722afabe30337e1d294fb0a9e',1,'uel_module']]], - ['autoptr_5fpool_454',['autoptr_pool',['../structuel__autopool.html#aa0f1f8622a0ba1f1d2d15d94eb5cbc71',1,'uel_autopool']]] -]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html deleted file mode 100644 index 49fe59a..0000000 --- a/docs/html/search/variables_1.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js deleted file mode 100644 index f6b1c01..0000000 --- a/docs/html/search/variables_1.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['base_455',['base',['../structuel__iterator__array.html#ace993eaa734f8fd100b086c2539afad9',1,'uel_iterator_array']]], - ['buffer_456',['buffer',['../structuel__cqueue.html#a5a87f38cf8b46556a71b286c8623a54d',1,'uel_cqueue::buffer()'],['../structuel__objpool.html#a69cf1db520005f386293899cdb9e07ca',1,'uel_objpool::buffer()']]] -]; diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html deleted file mode 100644 index 92982ac..0000000 --- a/docs/html/search/variables_10.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js deleted file mode 100644 index 82ae0c6..0000000 --- a/docs/html/search/variables_10.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['tail_521',['tail',['../structuel__cqueue.html#aa4fa1f34111ddf307825c9a6b06c4b4e',1,'uel_cqueue::tail()'],['../structuel__llist.html#a8d93e6bd35f15f0ee438088ebf814671',1,'uel_llist::tail()']]], - ['test_522',['test',['../structuel__conditional.html#a8d83f18dd90afbc47881b9617087c4a1',1,'uel_conditional']]], - ['timeout_523',['timeout',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#a9a6b966db9c39c3302c2a1cb8e813cad',1,'event::uel_event_detail::uel_event_timer']]], - ['timer_524',['timer',['../unionevent_1_1uel__event__detail.html#a5d602dc38887276027f2dac93afcb81d',1,'event::uel_event_detail::timer()'],['../structuel__scheduler.html#a46642fc80fb6d917ed35f3ab61d1c7eb',1,'uel_scheduler::timer()']]], - ['timer_5flist_525',['timer_list',['../structuel__scheduler.html#a9c71f717e4ca6878742aad2e147e9dd6',1,'uel_scheduler']]], - ['type_526',['type',['../structevent.html#a22c24ebb438dfad40f977484a1fa7a35',1,'event']]] -]; diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html deleted file mode 100644 index 94f1a8c..0000000 --- a/docs/html/search/variables_11.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js deleted file mode 100644 index 1f1ae54..0000000 --- a/docs/html/search/variables_11.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['unlistened_527',['unlistened',['../structevent_1_1uel__event__detail_1_1uel__event__listener.html#a7c68240052221e1ebbab4a9c1c096512',1,'event::uel_event_detail::uel_event_listener']]] -]; diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html deleted file mode 100644 index 61c013a..0000000 --- a/docs/html/search/variables_12.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js deleted file mode 100644 index 153988c..0000000 --- a/docs/html/search/variables_12.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['value_528',['value',['../structevent.html#af86fbbe00fa2851d24d29ba9b39f3ee2',1,'event::value()'],['../structevent_1_1uel__event__detail_1_1uel__event__signal.html#a74bcb07d316f77b7a2ec6efc3a62fe31',1,'event::uel_event_detail::uel_event_signal::value()'],['../structuel__llist__node.html#a1be7a63ce1a37b1bbb18bef46b8eae58',1,'uel_llist_node::value()'],['../structuel__promise.html#afca1c89f5e4903aa9df56416e0ae0f98',1,'uel_promise::value()']]] -]; diff --git a/docs/html/search/variables_13.html b/docs/html/search/variables_13.html deleted file mode 100644 index 87b7ca6..0000000 --- a/docs/html/search/variables_13.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_13.js b/docs/html/search/variables_13.js deleted file mode 100644 index 5e0b217..0000000 --- a/docs/html/search/variables_13.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['width_529',['width',['../structuel__signal__relay.html#aedd6f0d0fee789b65472d7fa3981322b',1,'uel_signal_relay']]] -]; diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html deleted file mode 100644 index 0c8a18c..0000000 --- a/docs/html/search/variables_2.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js deleted file mode 100644 index 596f3e9..0000000 --- a/docs/html/search/variables_2.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['cancelled_457',['cancelled',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#a1bd55787112aae874e8b4c906a37614e',1,'event::uel_event_detail::uel_event_observer']]], - ['closure_458',['closure',['../structevent.html#aac834e055b38447126d27c0dec51498c',1,'event']]], - ['closures_459',['closures',['../structuel__pipeline.html#a5dafb55ed93d4b7a6e8c7a9cfc50af4c',1,'uel_pipeline']]], - ['collection_460',['collection',['../structuel__iterator.html#a37bae427d28c271a3e9fbdc0c3a70b8d',1,'uel_iterator']]], - ['condition_5fvar_461',['condition_var',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#ac17e9951df24dfb12fa6a7824f65c311',1,'event::uel_event_detail::uel_event_observer']]], - ['config_462',['config',['../structuel__module.html#a9b066ffb62e47bf3fac7e0d70623eb15',1,'uel_module']]], - ['constructor_463',['constructor',['../structuel__autopool.html#a7890d66a262f1c057598b5cf281df2c2',1,'uel_autopool']]], - ['context_464',['context',['../structuel__closure.html#ae22a9c4275f31ab9741ef42479ce59cf',1,'uel_closure']]], - ['count_465',['count',['../structuel__cqueue.html#a0ef8883068b2d0b6d37e03cd33c46628',1,'uel_cqueue::count()'],['../structuel__llist.html#abd8b53084233e30e2dd36e1e2e7538f0',1,'uel_llist::count()'],['../structuel__pipeline.html#a6b52ff1fecb520e604f0b167e9c85a46',1,'uel_pipeline::count()']]] -]; diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html deleted file mode 100644 index 19a31fc..0000000 --- a/docs/html/search/variables_3.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js deleted file mode 100644 index 69f7c03..0000000 --- a/docs/html/search/variables_3.js +++ /dev/null @@ -1,7 +0,0 @@ -var searchData= -[ - ['destination_466',['destination',['../structuel__func__mapper.html#a847f834606bbc994068aaa93ed705e3c',1,'uel_func_mapper']]], - ['destructor_467',['destructor',['../structuel__autopool.html#a34dff758685ceefd0227aaf98eb66318',1,'uel_autopool']]], - ['detail_468',['detail',['../structevent.html#abcda7218789a4eac49e099cd895b042a',1,'event']]], - ['due_5ftime_469',['due_time',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#aded9e4913a031f9a4cc62ae362406b11',1,'event::uel_event_detail::uel_event_timer']]] -]; diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html deleted file mode 100644 index bdc37be..0000000 --- a/docs/html/search/variables_4.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js deleted file mode 100644 index 24fb041..0000000 --- a/docs/html/search/variables_4.js +++ /dev/null @@ -1,9 +0,0 @@ -var searchData= -[ - ['event_5floop_470',['event_loop',['../structuel__application.html#a206cef9bc1164781d91a883a38b0f0d9',1,'uel_application']]], - ['event_5fpool_471',['event_pool',['../structsyspools.html#ade1008e5647b9da5d4497d1d3dceadf1',1,'syspools']]], - ['event_5fpool_5fbuffer_472',['event_pool_buffer',['../structsyspools.html#a1a9c8bec00f4b19a1cea2d220860b89c',1,'syspools']]], - ['event_5fpool_5fqueue_5fbuffer_473',['event_pool_queue_buffer',['../structsyspools.html#ab54b76b022a0bff944791ca2ed3e157a',1,'syspools']]], - ['event_5fqueue_474',['event_queue',['../structsysqueues.html#a8ee3a87dc51095191300b5e90658d690',1,'sysqueues']]], - ['event_5fqueue_5fbuffer_475',['event_queue_buffer',['../structsysqueues.html#ae98fcac9a2822f2b2394a4c044f148a9',1,'sysqueues']]] -]; diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html deleted file mode 100644 index 6aa2249..0000000 --- a/docs/html/search/variables_5.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js deleted file mode 100644 index e1d8260..0000000 --- a/docs/html/search/variables_5.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['first_5fsegment_476',['first_segment',['../structuel__promise.html#a6f892488ff6d7f0a6b90b128306c8498',1,'uel_promise']]], - ['function_477',['function',['../structuel__closure.html#a53af2a72baa02fe3d0b18e20aff59a66',1,'uel_closure']]] -]; diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html deleted file mode 100644 index ce4a906..0000000 --- a/docs/html/search/variables_6.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js deleted file mode 100644 index 5e3c7c3..0000000 --- a/docs/html/search/variables_6.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['head_478',['head',['../structuel__llist.html#ab2e05ae8e0b0d0193011f8e5a4f903b6',1,'uel_llist']]] -]; diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html deleted file mode 100644 index 39ffd47..0000000 --- a/docs/html/search/variables_7.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js deleted file mode 100644 index db4500e..0000000 --- a/docs/html/search/variables_7.js +++ /dev/null @@ -1,8 +0,0 @@ -var searchData= -[ - ['if_5ffalse_479',['if_false',['../structuel__conditional.html#adb02d4c97ad9486edfb43dcb44ca2577',1,'uel_conditional']]], - ['if_5ftrue_480',['if_true',['../structuel__conditional.html#a49681bebb19750fea3e0ddcdc2e41ea9',1,'uel_conditional']]], - ['item_5fcount_481',['item_count',['../structuel__iterator__array.html#a514d0828182e9649d6285caddfb650c8',1,'uel_iterator_array']]], - ['item_5fsize_482',['item_size',['../structuel__iterator__array.html#a65622bdc18897601b6bc5da70ea44f09',1,'uel_iterator_array']]], - ['iterator_483',['iterator',['../structuel__func__mapper.html#a435db29ac7596f5b8c3f5c5735a2517f',1,'uel_func_mapper']]] -]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html deleted file mode 100644 index 37a2edd..0000000 --- a/docs/html/search/variables_8.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js deleted file mode 100644 index a18e684..0000000 --- a/docs/html/search/variables_8.js +++ /dev/null @@ -1,12 +0,0 @@ -var searchData= -[ - ['last_5fsegment_484',['last_segment',['../structuel__promise.html#a18d4ef955a1110e9182d7fea5779a147',1,'uel_promise']]], - ['last_5fvalue_485',['last_value',['../structevent_1_1uel__event__detail_1_1uel__event__observer.html#a79d55d944dc3a1b83c8b09bb88ebb7ce',1,'event::uel_event_detail::uel_event_observer']]], - ['launch_486',['launch',['../structuel__module.html#a5a45b6478c665841c477f57386785cd4',1,'uel_module']]], - ['limit_487',['limit',['../structuel__func__mapper.html#abfb2f5ced405ae371069abfd131a1895',1,'uel_func_mapper']]], - ['listener_488',['listener',['../unionevent_1_1uel__event__detail.html#a0be1ff74c4b46a39fb4a6dd320a9eb89',1,'event::uel_event_detail']]], - ['listeners_489',['listeners',['../structevent_1_1uel__event__detail_1_1uel__event__signal.html#ab003ff58199d9d50fa51b17532d75895',1,'event::uel_event_detail::uel_event_signal']]], - ['llist_5fnode_5fpool_490',['llist_node_pool',['../structsyspools.html#a8a333444479f17163fe541f84f88d8ce',1,'syspools']]], - ['llist_5fnode_5fpool_5fbuffer_491',['llist_node_pool_buffer',['../structsyspools.html#ab4b8e76d74b86c933227779f6dac2779',1,'syspools']]], - ['llist_5fnode_5fpool_5fqueue_5fbuffer_492',['llist_node_pool_queue_buffer',['../structsyspools.html#ae6d43157b64e89395ddf2ca93150c2de',1,'syspools']]] -]; diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html deleted file mode 100644 index 21e5a4f..0000000 --- a/docs/html/search/variables_9.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js deleted file mode 100644 index e72805e..0000000 --- a/docs/html/search/variables_9.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['mask_493',['mask',['../structuel__cqueue.html#a3f0a994df09bb73f3545024a857dca78',1,'uel_cqueue']]] -]; diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html deleted file mode 100644 index 1f65055..0000000 --- a/docs/html/search/variables_a.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js deleted file mode 100644 index ee00c07..0000000 --- a/docs/html/search/variables_a.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['next_494',['next',['../structuel__iterator.html#a034411056043f9316d2b7458c2bcfdc3',1,'uel_iterator::next()'],['../structuel__llist__node.html#a7976a89a4700768e540bf5b164f2dc68',1,'uel_llist_node::next()'],['../structuel__promise__segment.html#aa2c791377649da1fa8bcfb73beff2b48',1,'uel_promise_segment::next()']]] -]; diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html deleted file mode 100644 index c02d066..0000000 --- a/docs/html/search/variables_b.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js deleted file mode 100644 index 2eeddea..0000000 --- a/docs/html/search/variables_b.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['object_495',['object',['../structuel__autoptr.html#a215d58b3f6c7b953b0c60e8963252535',1,'uel_autoptr']]], - ['observer_496',['observer',['../unionevent_1_1uel__event__detail.html#a072f8eee18648e4fb7fc180043b65eac',1,'event::uel_event_detail']]], - ['observers_497',['observers',['../structuel__evloop.html#ac91617cd57a61785f2feb0748039836c',1,'uel_evloop']]] -]; diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html deleted file mode 100644 index 4b866c6..0000000 --- a/docs/html/search/variables_c.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js deleted file mode 100644 index b890cac..0000000 --- a/docs/html/search/variables_c.js +++ /dev/null @@ -1,6 +0,0 @@ -var searchData= -[ - ['pause_5flist_498',['pause_list',['../structuel__scheduler.html#abcdd34ae1b4f2889ce0e301bc1f52826',1,'uel_scheduler']]], - ['pools_499',['pools',['../structuel__application.html#af74c95c7a5b2c751e83a3bb6a5404e99',1,'uel_application::pools()'],['../structuel__evloop.html#a47a9ebe4361677bce4f550f3d08b74bb',1,'uel_evloop::pools()'],['../structuel__scheduler.html#a599ff398356901589bed5930a77523c3',1,'uel_scheduler::pools()'],['../structuel__signal__relay.html#af0cc9622120868903e43eda29518433b',1,'uel_signal_relay::pools()']]], - ['promise_5fpool_500',['promise_pool',['../structuel__promise__store.html#acde6648fc7bed2bbbdac7df5fa0059f7',1,'uel_promise_store']]] -]; diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html deleted file mode 100644 index 84d878b..0000000 --- a/docs/html/search/variables_d.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js deleted file mode 100644 index 4748627..0000000 --- a/docs/html/search/variables_d.js +++ /dev/null @@ -1,5 +0,0 @@ -var searchData= -[ - ['queue_501',['queue',['../structuel__objpool.html#a36c2a4bcb0eda229680daa4a03960506',1,'uel_objpool']]], - ['queues_502',['queues',['../structuel__application.html#a461dd6893eb70ee86bac7c43a9a86578',1,'uel_application::queues()'],['../structuel__evloop.html#aec967394710dd0b4b5184a8fd02d61a5',1,'uel_evloop::queues()'],['../structuel__scheduler.html#a962da3ed7102999d7379d2d26599160d',1,'uel_scheduler::queues()'],['../structuel__signal__relay.html#ae9438f0506aa721cbf56e917f58e0390',1,'uel_signal_relay::queues()']]] -]; diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html deleted file mode 100644 index b0d9b7b..0000000 --- a/docs/html/search/variables_e.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js deleted file mode 100644 index 45c2e06..0000000 --- a/docs/html/search/variables_e.js +++ /dev/null @@ -1,11 +0,0 @@ -var searchData= -[ - ['registry_503',['registry',['../structuel__application.html#aa02469024d8619255c81f6aace13e36e',1,'uel_application']]], - ['registry_5fsize_504',['registry_size',['../structuel__application.html#a5f7f83e74289e75c9e54b26e67bae14d',1,'uel_application']]], - ['reject_505',['reject',['../structuel__promise__segment.html#af38e4bf5f784ba283e91657b7b483c22',1,'uel_promise_segment']]], - ['relay_506',['relay',['../structuel__application.html#a5f1ffb5e716efc10ffd63968098ce2eb',1,'uel_application']]], - ['relay_5fbuffer_507',['relay_buffer',['../structuel__application.html#a4dc1aab92e88e5776d1013b4eb35ec5e',1,'uel_application']]], - ['repeating_508',['repeating',['../structevent.html#a67fa1b9a469d09599d2931769862d07b',1,'event']]], - ['resolve_509',['resolve',['../structuel__promise__segment.html#acd843866b15e8f0b035189404d002044',1,'uel_promise_segment']]], - ['run_5fscheduler_510',['run_scheduler',['../structuel__application.html#ad66b5adaa8603cec1f8072d43cc582f5',1,'uel_application']]] -]; diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html deleted file mode 100644 index a708dbf..0000000 --- a/docs/html/search/variables_f.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - -
    -
    Loading...
    -
    - -
    Searching...
    -
    No Matches
    - -
    - - diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js deleted file mode 100644 index 5cc42f0..0000000 --- a/docs/html/search/variables_f.js +++ /dev/null @@ -1,13 +0,0 @@ -var searchData= -[ - ['schedule_5fqueue_511',['schedule_queue',['../structsysqueues.html#a92e5df8975b6c6b1aa7f79df54da8565',1,'sysqueues']]], - ['schedule_5fqueue_5fbuffer_512',['schedule_queue_buffer',['../structsysqueues.html#a3f90eebf85af0e239358c276ea741917',1,'sysqueues']]], - ['scheduler_513',['scheduler',['../structuel__application.html#a977b88c48d61a8688773b062f74fc78c',1,'uel_application']]], - ['segment_5fpool_514',['segment_pool',['../structuel__promise__store.html#ae08a8b8b4a72f9e1d8cfb4d1c344317d',1,'uel_promise_store']]], - ['signal_515',['signal',['../unionevent_1_1uel__event__detail.html#a82ba97ed6ebbb9a86cecde4d0c48e4fc',1,'event::uel_event_detail']]], - ['signal_5fvector_516',['signal_vector',['../structuel__signal__relay.html#a264ee9199e913c30ec6487d258093324',1,'uel_signal_relay']]], - ['size_517',['size',['../structuel__cqueue.html#ad424eefbf635da1957a7c25a6b390a57',1,'uel_cqueue']]], - ['source_518',['source',['../structuel__autoptr.html#a32f472b4cef00ebc64db35493ac269d9',1,'uel_autoptr::source()'],['../structuel__promise.html#a2f753bbc2fcd30adcafac5de640143f5',1,'uel_promise::source()']]], - ['state_519',['state',['../structuel__promise.html#a678870a0975db700de0bbcb5d102aa4e',1,'uel_promise']]], - ['status_520',['status',['../structevent_1_1uel__event__detail_1_1uel__event__timer.html#a38f12f5dce7b8ef363fd5c8a786d3390',1,'event::uel_event_detail::uel_event_timer']]] -]; diff --git a/docs/html/signal_8h.html b/docs/html/signal_8h.html deleted file mode 100644 index ac2c58f..0000000 --- a/docs/html/signal_8h.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/signal.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    signal.h File Reference
    -
    -
    - -

    Defines signals and relays, structures used to communicate asynchronously between distant parts of the application. -More...

    -
    -Include dependency graph for signal.h:
    -
    -
    - - - - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_signal_relay_t
     Contains a signal vector and operates on in. More...
     
    - - - - - - -

    -Typedefs

    typedef uintptr_t uel_signal_t
     
    -typedef struct uel_event_listener * uel_signal_listener_t
     Defines a reference type suitable to manipulate the actual listener event's context.
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void uel_signal_relay_init (uel_signal_relay_t *relay, uel_syspools_t *pools, uel_sysqueues_t *queues, uel_llist_t *buffer, uintptr_t width)
     Initialises a signal relay. More...
     
    uel_signal_listener_t uel_signal_listen (uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
     Attaches a listener closure to some signal at a particular relay. More...
     
    uel_signal_listener_t uel_signal_listen_once (uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
     Attaches a listener closure to some signal at a particular relay. The listener closure will be invoked only once. More...
     
    void uel_signal_unlisten (uel_signal_listener_t listener)
     Marks a signal listener as expired. When its corresponding signal is emitted, this listener's closure will not be invoked and the listener will be destroyed. More...
     
    void uel_signal_emit (uel_signal_t signal, uel_signal_relay_t *relay, void *params)
     Emits a signal at the supplied relay. Any closure listening to this signal will be asynchronously invoked. More...
     
    uel_signal_listener_t uel_signal_resolve_promise (uel_signal_t signal, uel_signal_relay_t *relay, uel_promise_t *promise)
     Attaches a non-repeating listener that resolves the provided promise upon emission. More...
     
    uel_signal_listener_t uel_signal_reject_promise (uel_signal_t signal, uel_signal_relay_t *relay, uel_promise_t *promise)
     Attaches a non-repeating listener that rejects the provided promise upon emission. More...
     
    -

    Detailed Description

    -

    Defines signals and relays, structures used to communicate asynchronously between distant parts of the application.

    -

    Typedef Documentation

    - -

    ◆ uel_signal_t

    - -
    -
    - - - - -
    uel_signal_t
    -
    -

    Any signal is defined as an unsigned integer type. This means that any signal type is only valid within the scope defined by the relay designed to respond to said signal.

    - -
    -
    -

    Function Documentation

    - -

    ◆ uel_signal_emit()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_signal_emit (uel_signal_t signal,
    uel_signal_relay_t * relay,
    void * params 
    )
    -
    - -

    Emits a signal at the supplied relay. Any closure listening to this signal will be asynchronously invoked.

    -
    Parameters
    - - - - -
    signalThe signal to be emitted
    relayThe relay where the signal is registered
    paramsThe parameters supplied to the listener's closure when it is invoked.
    -
    -
    - -
    -
    - -

    ◆ uel_signal_listen()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_signal_listener_t uel_signal_listen (uel_signal_t signal,
    uel_signal_relay_t * relay,
    uel_closure_t * closure 
    )
    -
    - -

    Attaches a listener closure to some signal at a particular relay.

    -
    Parameters
    - - - - -
    signalThe signal to be listened for
    relayThe relay where the listener will be registered
    closureThe closure to be invoked when the signal is emitted. The closure will be invoked with whatever parameters are supplied during emission.
    -
    -
    -
    Returns
    Returns a listener that references this particular operation
    - -
    -
    - -

    ◆ uel_signal_listen_once()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_signal_listener_t uel_signal_listen_once (uel_signal_t signal,
    uel_signal_relay_t * relay,
    uel_closure_t * closure 
    )
    -
    - -

    Attaches a listener closure to some signal at a particular relay. The listener closure will be invoked only once.

    -
    Parameters
    - - - - -
    signalThe signal to be listened for
    relayThe relay where the listener will be registered
    closureThe closure to be invoked when the signal is emitted. The closure will be invoked with whatever parameters are supplied during emission.
    -
    -
    -
    Returns
    Returns a listener that references this particular operation
    - -
    -
    - -

    ◆ uel_signal_reject_promise()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_signal_listener_t uel_signal_reject_promise (uel_signal_t signal,
    uel_signal_relay_t * relay,
    uel_promise_t * promise 
    )
    -
    - -

    Attaches a non-repeating listener that rejects the provided promise upon emission.

    -
    Parameters
    - - - - -
    signalThe signal to be listened for
    relayThe relay where the signal is registered
    promiseThe promise to be rejected upon signal emission
    -
    -
    -
    Returns
    The listener associated with this operation
    - -
    -
    - -

    ◆ uel_signal_relay_init()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void uel_signal_relay_init (uel_signal_relay_t * relay,
    uel_syspools_t * pools,
    uel_sysqueues_t * queues,
    uel_llist_t * buffer,
    uintptr_t width 
    )
    -
    - -

    Initialises a signal relay.

    -
    Parameters
    - - - - - - -
    relayThe signal relay object to be initialised
    poolsThe system's internal pools
    queuesThe system's internal queues
    bufferThe buffer that will be used to store listeners registered at this relay. Must be the number of signals bound to this relay wide.
    widthThe number of signals bound to this relay.
    -
    -
    - -
    -
    - -

    ◆ uel_signal_resolve_promise()

    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    uel_signal_listener_t uel_signal_resolve_promise (uel_signal_t signal,
    uel_signal_relay_t * relay,
    uel_promise_t * promise 
    )
    -
    - -

    Attaches a non-repeating listener that resolves the provided promise upon emission.

    -
    Parameters
    - - - - -
    signalThe signal to be listened for
    relayThe relay where the signal is registered
    promiseThe promise to be resolved upon signal emission
    -
    -
    -
    Returns
    The listener associated with this operation
    - -
    -
    - -

    ◆ uel_signal_unlisten()

    - -
    -
    - - - - - - - - -
    void uel_signal_unlisten (uel_signal_listener_t listener)
    -
    - -

    Marks a signal listener as expired. When its corresponding signal is emitted, this listener's closure will not be invoked and the listener will be destroyed.

    -
      -
    • Parameters
      - - -
      listenerThe listener that identifies the listen operation to be undone
      -
      -
      -
    • -
    - -
    -
    -
    - - - - diff --git a/docs/html/signal_8h__dep__incl.map b/docs/html/signal_8h__dep__incl.map deleted file mode 100644 index 7d9123d..0000000 --- a/docs/html/signal_8h__dep__incl.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/signal_8h__dep__incl.md5 b/docs/html/signal_8h__dep__incl.md5 deleted file mode 100644 index 7b22c30..0000000 --- a/docs/html/signal_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -55a842d5522776eade431677134833be \ No newline at end of file diff --git a/docs/html/signal_8h__dep__incl.png b/docs/html/signal_8h__dep__incl.png deleted file mode 100644 index 88e69b5cc35e7ff2cbf203332fef613967c51918..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 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 z%0AP8{9@2^A*TI%ii(Q7yak4pPP+?@CLT!mHzw3ws!1<0hoLBU(#n;sQ6upn@%AE; zL`^=?q+a7P+c;te2`q&j=JF~Wr;cDInm_`v?#FIhqrg^ku(82lFfb_&)&$|h>^On+ zc}=%>u`Ua)VxZ~2y-0aBZekq&adN=i&h}e1WXKzW`t+4LR2BpF?s^zBCjU9Rlb}|g z+v}C44|_8yDzoO<$=h`ucapDY>83LovSNIb?|gGzfSRY?Zi4?;|G_#(ad2=}itn29 ze2`-)pMk-k5wWq10@9?P+4%X1FXJaizen7sz*6>W%+d{+=V$)e9Z-+#Z7E P5d@+vuP#?4YZ~-lPN{lu diff --git a/docs/html/signal_8h__incl.map b/docs/html/signal_8h__incl.map deleted file mode 100644 index 2becd3c..0000000 --- a/docs/html/signal_8h__incl.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/html/signal_8h__incl.md5 b/docs/html/signal_8h__incl.md5 deleted file mode 100644 index 8442ba3..0000000 --- a/docs/html/signal_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -89f0d3611c0aae40ce6e7e8ecdf592ce \ No newline at end of file diff --git a/docs/html/signal_8h__incl.png b/docs/html/signal_8h__incl.png deleted file mode 100644 index 96a73fd06abe46c3ee8fee239cebf74b0de9c3ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64671 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 - - - - - - -µEvLoop: include/uevloop/system/signal.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    signal.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    6 #ifndef UEL_SIGNAL_H
    -
    7 #define UEL_SIGNAL_H
    -
    8 
    - -
    10 #include "uevloop/utils/closure.h"
    -
    11 #include "uevloop/utils/promise.h"
    - - -
    14 #include "uevloop/system/event.h"
    -
    15 
    -
    22 typedef uintptr_t uel_signal_t;
    -
    23 
    -
    27 typedef struct uel_event_listener *uel_signal_listener_t;
    -
    28 
    -
    39 typedef struct uel_signal_relay uel_signal_relay_t;
    - -
    43  uel_llist_t *signal_vector;
    -
    46  uel_sysqueues_t *queues;
    -
    48  uel_syspools_t *pools;
    -
    50  uintptr_t width;
    -
    51 };
    -
    52 
    - -
    63  uel_signal_relay_t *relay,
    -
    64  uel_syspools_t *pools,
    -
    65  uel_sysqueues_t *queues,
    -
    66  uel_llist_t *buffer,
    -
    67  uintptr_t width
    -
    68 );
    -
    69 
    - -
    79  uel_signal_t signal,
    -
    80  uel_signal_relay_t *relay,
    -
    81  uel_closure_t *closure
    -
    82 );
    -
    83 
    - -
    94  uel_signal_t signal,
    -
    95  uel_signal_relay_t *relay,
    -
    96  uel_closure_t *closure
    -
    97 );
    -
    98 
    - -
    106 
    -
    115 void uel_signal_emit(uel_signal_t signal, uel_signal_relay_t *relay, void *params);
    -
    116 
    - -
    126  uel_signal_t signal,
    -
    127  uel_signal_relay_t *relay,
    -
    128  uel_promise_t *promise
    -
    129 );
    -
    130 
    - -
    140  uel_signal_t signal,
    -
    141  uel_signal_relay_t *relay,
    -
    142  uel_promise_t *promise
    -
    143 );
    -
    144 
    -
    145 #endif /* end of include guard: UEL_SIGNAL_H */
    -
    -
    uel_signal_listener_t uel_signal_resolve_promise(uel_signal_t signal, uel_signal_relay_t *relay, uel_promise_t *promise)
    Attaches a non-repeating listener that resolves the provided promise upon emission.
    -
    void uel_signal_emit(uel_signal_t signal, uel_signal_relay_t *relay, void *params)
    Emits a signal at the supplied relay. Any closure listening to this signal will be asynchronously inv...
    -
    uintptr_t uel_signal_t
    Definition: signal.h:22
    -
    uel_signal_listener_t uel_signal_reject_promise(uel_signal_t signal, uel_signal_relay_t *relay, uel_promise_t *promise)
    Attaches a non-repeating listener that rejects the provided promise upon emission.
    -
    Defines a simple implementation of linked lists and functions to manipulate it.
    -
    uel_syspools_t * pools
    A quick reference to the system's internal pools.
    Definition: signal.h:48
    -
    Defines closures, objects that bind functions to creating and calling contexts.
    -
    uel_sysqueues_t * queues
    Definition: signal.h:46
    -
    Contains a signal vector and operates on in.
    Definition: signal.h:40
    -
    Defines events and methods to configure events.
    -
    uel_signal_listener_t uel_signal_listen_once(uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
    Attaches a listener closure to some signal at a particular relay. The listener closure will be invoke...
    -
    Contains definitions for promise stores, promises and functions to manipulate them.
    -
    uel_llist_t * signal_vector
    Definition: signal.h:43
    -
    uel_signal_listener_t uel_signal_listen(uel_signal_t signal, uel_signal_relay_t *relay, uel_closure_t *closure)
    Attaches a listener closure to some signal at a particular relay.
    -
    A container for the system's internal queues.
    -
    void uel_signal_unlisten(uel_signal_listener_t listener)
    Marks a signal listener as expired. When its corresponding signal is emitted, this listener's closure...
    -
    struct uel_event_listener * uel_signal_listener_t
    Defines a reference type suitable to manipulate the actual listener event's context.
    Definition: signal.h:27
    -
    void uel_signal_relay_init(uel_signal_relay_t *relay, uel_syspools_t *pools, uel_sysqueues_t *queues, uel_llist_t *buffer, uintptr_t width)
    Initialises a signal relay.
    -
    uintptr_t width
    The number of signals registered at this relay.
    Definition: signal.h:50
    -
    A container for the system's internal pools.
    - - - - diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png deleted file mode 100644 index fe895f2c58179b471a22d8320b39a4bd7312ec8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T diff --git a/docs/html/structevent.html b/docs/html/structevent.html deleted file mode 100644 index 4e54d84..0000000 --- a/docs/html/structevent.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - -µEvLoop: uel_event_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_event_t Struct Reference
    -
    -
    - -

    Events are special messages passed around the core. They represent tasks to be run at some point by the system. - More...

    -
    -Collaboration diagram for uel_event_t:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - - - - - -
    [legend]
    - - - - -

    -Data Structures

    union  uel_event_detail
     
    - - - - - - - - - - - - - - - - -

    -Data Fields

    -uel_event_type_t type
     The type of the event, as defined by uel_event_type_t
     
    -uel_closure_t closure
     The closure to be invoked a.k.a. the action to be run.
     
    -void * value
     The value the closure should be invoked with.
     
    -bool repeating
     Marks whether the event should be discarded after processing.
     
    -union event::uel_event_detail detail
     Represents speciffic detail on a event depending on its type.
     
    -

    Detailed Description

    -

    Events are special messages passed around the core. They represent tasks to be run at some point by the system.

    -

    Events are bound to information on how and when they should be invoked. There are five types of events:

    -
      -
    • UEL_CLOSURE_EVENT: lifeless wrappers to closures.
    • -
    • UEL_TIMER_EVENT: contains scheduling information associated with some closure
    • -
    • UEL_SIGNAL_EVENT: contains information on the emission of a signal
    • -
    • UEL_SIGNAL_LISTENER_EVENT: represent a single listening operation
    • -
    • UEL_OBSERVER_EVENT: represents a variable being observer by the event loop
    • -
    -

    Closure and timer events can be recurring, in which case they won't be discarded after processing by the event loop.

    -

    Signal events are always discarded by the event loop. Signal listeners are never meant to be sent there. In their case, the repeating flag determines whether the signal should be able to fire multiple times or just once.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener.html b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener.html deleted file mode 100644 index 7f149f4..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - -µEvLoop: uel_event_t::uel_event_detail::uel_event_listener Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    uel_event_t::uel_event_detail::uel_event_listener Struct Reference
    -
    -
    - -

    Contains the context of a particular signal listener. - More...

    - -

    #include <event.h>

    -
    -Collaboration diagram for uel_event_t::uel_event_detail::uel_event_listener:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - -

    -Data Fields

    bool unlistened
     
    -

    Detailed Description

    -

    Contains the context of a particular signal listener.

    -

    Field Documentation

    - -

    ◆ unlistened

    - -
    -
    - - - - -
    bool uel_event_t::uel_event_detail::uel_event_listener::unlistened
    -
    -

    When this flag is set, the event_loop will not run this event's closure. Additionally, the event will be destroyed.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.map b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.map deleted file mode 100644 index d4cfbc7..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.md5 b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.md5 deleted file mode 100644 index 7b58471..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -07359ca3e14dff525078b4cc6a612a6a \ No newline at end of file diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.png b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__listener__coll__graph.png deleted file mode 100644 index 3abd1a1379fb40e4d4aa25493334db4735b5a836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3726 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 b@&|0q5fX7%ziI0O8%&U{wmz&3Y7_DwR#sHZ diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer.html b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer.html deleted file mode 100644 index 4cef98e..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - -µEvLoop: uel_event_t::uel_event_detail::uel_event_observer Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    uel_event_t::uel_event_detail::uel_event_observer Struct Reference
    -
    -
    - -

    Contains the reference to an observer variable. - More...

    - -

    #include <event.h>

    -
    -Collaboration diagram for uel_event_t::uel_event_detail::uel_event_observer:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - -

    -Data Fields

    -volatile uintptr_t * condition_var
     The address of a volatile value to observe.
     
    uintptr_t last_value
     
    -bool cancelled
     Whether this observer has been cancelled and is awaiting for destruction.
     
    -

    Detailed Description

    -

    Contains the reference to an observer variable.

    -

    Field Documentation

    - -

    ◆ last_value

    - -
    -
    - - - - -
    uintptr_t uel_event_t::uel_event_detail::uel_event_observer::last_value
    -
    -

    The last value read

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.map b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.map deleted file mode 100644 index e79a83e..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.md5 b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.md5 deleted file mode 100644 index 730540c..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7a346f8375a1adc8d6e8becd9eac5864 \ No newline at end of file diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.png b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__observer__coll__graph.png deleted file mode 100644 index 112f7137c96b5f386dad1d41e0b6fca492e61006..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6818 zcmZu$WmHsAyFN66Ajr@qpduj+(k&p;AUz03NlFdfibx|}($a%;42`saNDtjPFf>Tr ze zf2}AF-2HoIw-m+$0FB-&c^Mtg3{<93d<>@4Sqyx6^=ufEJdQ1;tj@nd zch5Avn}-K~s>-|bTt)~%_sGbICu-Ge54U$@Bt|wTrAjex1mWlBC(bZ3-LfU)@$XTu ziD*Yn6A{Ps?(XjLI~OWsdGPkcFgm40*A$kN3<%IKf7rv_+@D8$KY+kJ{?FZTxRFGJ zgkk}=*XY?)-ggSRx|8VHpe4p;8_L}K*HYv6$GQC3*w|jZem!Q-@4hqc)Oxw`N%j4E zp*KyYR;VuJx)CW9{YLlSV@HG? z_1k4nQc|+salSLU(x(p!g>D_cyGKM+Ft%M#P{15#v)JmV!~TXVIqw+_1B3tBp217) z9kslw)Z}D6XXi@r)aFDidm0-%`^pDlLmFBFx*>$!6g-pPn)s7!e_tQ^@UYSQ)Yi}M zrp4#H_4??wlarH_RNK4W=$nhx7*2}U(8fkZQ)3|qqyYG0Wi52yopf%TtE&@Av>N#5 zd?*pE)lk~Yr}0tSRn8r8Ff1%AJjVK(8lF@YT3TA%kRbACYJOax-GXl-F@4&MOs+ty z5=&805eU@h)P4Wmm*!2{=(d}jn2jx%w9ru8Zf8HgmWqmstgI{@b_Ykt9s)Z%I}E_z z-+yO7b-&8&gPWTUe%#>tj!v>X&0iw+EQLfX{NODl-$Hv_z+1o53D6I3Z*O8o$+=zHn}jnZ2itTJA*MYX8rv6^JN6ZwvNZ{WcdrH1vk)ic`Ti83YPp5hCTE> ztyJSjhO;M2tiz_#vT|~5H)lrLXJKY2XIy-F)@)dLT2GIH{1gtmPo(1BlSjG$17jGg(mY4^E0 z)|L`cS7oOkK59KyDetBt6JmH`Vm{nsjMXb0ZmcvVx&ExAA>#es?2WqJ-Jk1wT#~R2 z7@lI7SizmK=GYi}>SfTuM@UKIJg*?O{=p=<+r3#_66_BQ_l8h}(XnoWj%9xAD<@b0 z-CQ}ZT8sxO*9FZJK|}(nlxZMmc146x=KCE5N7V*@mu!UK0K!ePX|pW+f#-Kqp;=AX zLk|Nnb)u^VmYN9x;0U7z-6FaWZ*nqnE#DjGdB+fi(YgtRBxIU1^)YfB!T(AYPa|0@ zi|B6Hs=q;>$`{-rG=l7K=SDqaMx6HK?h-iI6}@77hIZmoW!9I5&w9T5%)88FbJ$}G zH^`t?B0m=zgfOZy%^IG6rNrsROWSqw$T`}Sm8*-k_&P+$uvDppE`?fEX6Gr0U-*3O z*MND&P(%5++vuG9j^xBjYHX@JYI|N$E*T&!3uo{zFSq51h1-m_o3GFUrOfFe13^dF zy8;BZlz%c$8nrtOWH|S!vApcqX(dFFNZOHvt@~U zQ@*Se_|EUOiC%yY5@HPm9yKM&E0pm|kkkBjjv_J(>e;k9O6?LrP3AC_^$3!USA zWRn!;dGkjSl9(qQjYN=Lw5W7p#2}+2XddrVZJC`$Oy9`D0=6r4V@OyH+KhiPP;Dh1 z(q848H%75A1n@?xsvAjFH~0)Qga#zosroB+*V8eTE{ZzgV_k2?okmz}G7qk*MIL6p z!T^-Ij~H~@BI+}vLIiEkJFK4*y@b9#W;Gqe)geyXKZI@*@5>Nxz=rNGIWN%v3e+G5 zez@MQT95X`tufd{Es_D*ZHl__iwvzjMwJUMl>$i}`h0!OgU)A4-#)_vrlWuSc`|QW zQh_GH_IjW5xskquuwe?WgbVzr_C^g9*qmCL^yO-XXFbASsO8vA#sd0alb&thWHIg-)VtiX_Raj0l1aLg|Cw@y5M?SDxh%g zd`wEQY$@BuudDO+IFj63S2bzzv!TWEaJ~ogRWj=~>n|NYGQP-GRqwYQ;Tw+*DmXwyLnq{tQLs1az{df*yDs^+eGgA0J}?b#-+x7z~6U9UW#pk*NUXEmn)!R<66Vbnyd;NNFqExTCstOF#Gsr+;mcOB%p5B``1%nr1Kde4{ zsO?CH;q?Z(Md4M>*kj8eXJ-YcKMcIgAQ=6*?%kRs@ZyEXKmyzF@GyR`J+kKBEV0<5 zM@uW+5sdy9%j3n`dgX?1OibW@Asl+}U;X{t2M2Ago5WcodiJfwRV)teLK0_(haIqP z=J@{k`T1#4d7rRs=nL9=iw#pq&%71!Uf1S$y_9MOcM&=@W#xh4Ofdt_Bx5cqm$fi+ z^(C+44RQ$N`e=|F#3FHVaV;$^(g=x)w*fcqczB<8rz!%DhhDr+=IR#uIt8XxXa59s zaG=f{2YP{5fw3`^UO1+7FB_`(z(~`lt+9oN9;=0K_#pSypyI9`l#^m`-35$=m>A;g z*RL#!(WdJl%0SjR7&$ng+S>zFo_75Tg!!1nE9H-mkAr|$cn9 z>&s)kGX2AoZ7|mhcem$luU@@+_{Gs_;ZY!rtra$}!tn=QPUf|JdKgJ1!MI_@LzU(K z_r0<*!6(_7D$9tKa|w3#fuW)2TwKHR^EZ8QEXmw&!OY?s9(c95tPl8{@8e)&tE3C5 zx+=xq_=llvF^cfFaJnLuDt5=CN^X-D7Wr0$-2s)|C61_);~ z1drjOS4gBG0DSK17^sw%Al`)TAp`IanvbI!Z?p)P8I^48?H|YY%gD&c4S;q$pc6)) zY-`6UVFO`dVH&>j1-GO=o$%ytb7v5;y0C-`56A95Rm&*)L*{-4A+Q9SPPkekR8YcR zC|x1%(6d=HPl1i#UOl%E#^n7pF!+3_WpKFThn%Ek+M%c|nqE!ogWX+@hhHGeIe-8D zHM>8Bwh2>TWv|ep?zBr*D+HSx+^}}%aJ3gRXz5of|5U}>DL&u4MpEdi@XlUHa4<77 zvylCC`|9BiNGuo^P8`3<5LgmJPAC{fFH6RmM z5)Z}fp=;aQuL`ulABu^J^1O4Gk#=_$?XIu=S~1ILMkxjgitiWI zt*zhWnFR#|vT3l=X6qax!oyu)uvX8*l~~*yn6u1ibm-iZi6Z0E!sE@6fYS-R(vp&< zrY5yaQFjzl@c-oqtG|D1h-R7?8nQq90(O1H0xe#)U*9CIqFyX4eGmrMiguyen@O&c z1Z|-U7AQhnA;z}`yo8&(Vr9j=Sf^y}ky#DL%2|B^EPa+R@6pS20~2E^}VixkK%FDH6KhCNPFIHrJTf)zUEgCxt!+gmg|*QIf8aq$kU{sAF5%rt$& zAIkXE3+2!EuG#X;`p#66WF|a}eJInj^*s`^O73Iw{Vx%?5wZG3RYr29ErLJ&=MP_o za3*}d*iJFVS3ooq4j1gSNoH7P-%fI2G(au{VzpHDdZEa)#QR|-ZG@n4Qc_aII>@=X z$eS;!rT^G~_b8uQAy=Ww)c$ymq9k&O=q%K`)b4zv^LcyFirvU{O#56kRZ1G8=o*$y zA8p<^by4IZ4lb^Of&%<)+qZ6W-qc?wCnpUJ!ZcCe;iS)3-F93C+)!%tUHyvMqiOK@ zbka6_<#(iub0$<&;aNB1?hC{;=jYngZ3wsRuhrGZ`LE(TySn^*eXFXg1wHarGt}hN zQbCX84txbH!%igm91FIx4#qi!&mX#X;=5j9@=D34c@&c=cw&o9UjH_8RD9GBsD#7; zut&~|IQ9h2c7+~w(XP98O*IH`-_SM)cxqvl(Wsoo&APkf^QWTwEdSw(zD~_FCrr7Tpmt=fN9DGavj4)A zJ)E`WB)j#;>z~vqv6%IR0s!_TS3kvqYN~zvs9D3oq&C6q#Aoja6H;ae2t|{-iE`{cn&uf&Qa*eqb3WQm4ijZ+Xo1|w7$wfsKLF9ec@KpS} zE=Ik$Sdc@B#QaW?!B6Zc0g{U}u`eI5Ys$@}IV0w_)vI_j{S7Q7<`i=;t>5w)#7u^E z!>J)W=5s62G4DAaLh`4GPi&F&Lq8I-R{wNnDyj!pWbsjq%m9?e)^wfNz2y$;8A2uDxovx5xSZJnkNVscEYJ-r&}o(!BV;NcCe; ziYx-;vIytZ(0ihtOq1fUcUYTHe9cM%6x^Wtdv>JDtzMimc?3y>JR^$Bpenzt z?7rB>q37u6sB8`i@Q5NJhEeKUMn**(YdcwqHc6qekcKeqDFa)79o9pY{Jw5x2ZHzBRGsQe`@$jrIEI=J6Q`}3d01G*-zcc+MqN8ST z_0a$Ja`S=Ib*w@jC<&B95p`hm&B>8D2+A7Aa`)YHHcT*PK5{D$>f__n?X`S-H~n~G zaF9?Y7R0DQvN>DhX`$g2%}3#xne!od5B}Mml0vn|F`CEXZX~{Ii^b`-hy5}uD2kdN zOrZ2Lh>LIrxQm#5(qR{5W?ot92mz(BhhNtE<5|UEd!U-)X=X>m&W!(%meyx|ATi+X zYH>Q|yFYytok&${tI5-`n!F_vTK6ei3K3XvZVYUy%z%XiAM`&XHTBC)l9`2-)t~K? za-(`K;|BC}2}rD2?-^M z!h(;C_bdBld+Dz&lApmdEk5;yh1QOaa2dnu>28vrE4=g7N%lfwPo7vRnc3U# zDKh$597-;k?InHQuGw8*w>+B&YxHgJntuKuuZ$WL0YUW*2Q$blT~I-iDaREu_UDh| ze3PXk_b=RqDa6M~il0R(stCi44R8tYfjAKRHieLISW`gAGs}aC#GPu-upE@{(92z5 zen1dONXey>5YfF-R#tX(eh?v_`-P0vaiQ7kWNS2hu37FgaTM)~eK3}(si{w%Ji!l+ zWRMV*l)OdNFDj5=13$o9fBcBOUVPs9i4fG8+O;fj8MzIr*79N`2_8Ja1EFX0i$&jK zWUU=YN!aIqTN$%+fZEh42x!G!H||??nO7z~H-as9;&5|wyVHXb;ZT}jX;oF#_wQC~ zeR1hR4r!w9B}ZNw+gMp6QqC*bNj@SD$QmMAA&`}sG71U`78DjvO-x)~T;vxPs;BT^ z0I|u*$?55{6BFcgbj{AIJ(cfzOK9;orX#8O**Q3}B>iY0knyRh!rcbQgw(}S2)MW$ zhD&64rkfGgBMczB083q6^3nnwlRc0ju|C&~g+~ll)O@R-4_L~dK79hgF>k^qyi>N-ZVBgf=z^)n%Y;gt)O6?@$RA*#6Tb^ z1Of8Zn7UL8`u<$A*D)xKH%`?FT!7&wE{X+N!$V9WBiJJe!H!_;t*|BwS5iA44tB|Lf zCa}FVnnzDh4{GvYtU&18`xFXDgQ(8S>)(6@uaiB+7fLHy|L#__Sy@`v*3~H&Xf+xy zEG}{<57v78(pcrgz>VPFL)Pwsl{c95yldq?C?#|ZfK;Hmy80iF1=lMH$q)M(K2B@y zCr{R^M2 - - - - - - -µEvLoop: uel_event_t::uel_event_detail::uel_event_signal Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    uel_event_t::uel_event_detail::uel_event_signal Struct Reference
    -
    -
    - -

    Contains information related to an emitted signal. - More...

    - -

    #include <event.h>

    -
    -Collaboration diagram for uel_event_t::uel_event_detail::uel_event_signal:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -uintptr_t value
     The integer value that identifies this signal.
     
    -uel_llist_t * listeners
     Reference to the signal listeners.
     
    -

    Detailed Description

    -

    Contains information related to an emitted signal.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.map b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.map deleted file mode 100644 index eaa5044..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.md5 b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.md5 deleted file mode 100644 index f6bdb61..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -8130dcbe5dc62eb4e70365054663250f \ No newline at end of file diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.png b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__signal__coll__graph.png deleted file mode 100644 index 091ef278711edd697105095011bb4b56577ac406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5477 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 Uc9sf!U~URhReA+4S1=FxAA3-#K>z>% diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer.html b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer.html deleted file mode 100644 index 11c7eca..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - -µEvLoop: uel_event_t::uel_event_detail::uel_event_timer Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    uel_event_t::uel_event_detail::uel_event_timer Struct Reference
    -
    -
    - -

    Contains information suitable for scheduling an event at the scheduler. - More...

    - -

    #include <event.h>

    -
    -Collaboration diagram for uel_event_t::uel_event_detail::uel_event_timer:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uint32_t due_time
     The value the system timer must be at when this event's closure should be invoked. This is a best effort value.
     
    -uint16_t timeout
     Holds the interval between two executions of the timer.
     
    -uel_event_timer_status_t status
     Current timer status.
     
    -

    Detailed Description

    -

    Contains information suitable for scheduling an event at the scheduler.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.map b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.map deleted file mode 100644 index 540c440..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.md5 b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.md5 deleted file mode 100644 index 3831385..0000000 --- a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -503d112eba55590e204abd1b97cc4bbf \ No newline at end of file diff --git a/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.png b/docs/html/structevent_1_1uel__event__detail_1_1uel__event__timer__coll__graph.png deleted file mode 100644 index 3fa8a334575b7f805a61f1c362e66c30813eeab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8911 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 diff --git a/docs/html/structevent__coll__graph.map b/docs/html/structevent__coll__graph.map deleted file mode 100644 index 5e7fd2f..0000000 --- a/docs/html/structevent__coll__graph.map +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/docs/html/structevent__coll__graph.md5 b/docs/html/structevent__coll__graph.md5 deleted file mode 100644 index 35101c9..0000000 --- a/docs/html/structevent__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d07f81fdb67acb725b580c5cae8dde1d \ No newline at end of file diff --git a/docs/html/structevent__coll__graph.png b/docs/html/structevent__coll__graph.png deleted file mode 100644 index cec2d8dae8607fee3ea8ecb327706e40678b6a41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53321 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 DoIV1y diff --git a/docs/html/structsyspools.html b/docs/html/structsyspools.html deleted file mode 100644 index f454661..0000000 --- a/docs/html/structsyspools.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - -µEvLoop: uel_syspools_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_syspools_t Struct Reference
    -
    -
    - -

    A container for the system pools. - More...

    -
    -Collaboration diagram for uel_syspools_t:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    -uel_event_t event_pool_buffer [UEL_SYSPOOLS_EVENT_POOL_SIZE]
     The buffer used to store events in the event pool.
     
    -void * event_pool_queue_buffer [UEL_SYSPOOLS_EVENT_POOL_SIZE]
     The buffer used to store event pointers in the event pool queue.
     
    -uel_objpool_t event_pool
     The event pool object. Contains all the events used by the core.
     
    -uel_llist_node_t llist_node_pool_buffer [UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE]
     The buffer used to store llist nodes in the llist node pool.
     
    -void * llist_node_pool_queue_buffer [UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE]
     The budder used to store llist node pointers in the llist node pool queue.
     
    -uel_objpool_t llist_node_pool
     The llist node pool object. Contains all llist nodes used by the core.
     
    -

    Detailed Description

    -

    A container for the system pools.

    -

    The syspools object is meant as a container for the internal system pools. It is a safe interface to the pools, acquiring and releasing objects on demand.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structsyspools__coll__graph.map b/docs/html/structsyspools__coll__graph.map deleted file mode 100644 index dc4ade9..0000000 --- a/docs/html/structsyspools__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/structsyspools__coll__graph.md5 b/docs/html/structsyspools__coll__graph.md5 deleted file mode 100644 index 17e49a8..0000000 --- a/docs/html/structsyspools__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -543b0027629887388e0da4164bed7fca \ No newline at end of file diff --git a/docs/html/structsyspools__coll__graph.png b/docs/html/structsyspools__coll__graph.png deleted file mode 100644 index f12b8261d2a3a587271032440f45343191cb7308..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15746 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 - - - - - - -µEvLoop: uel_sysqueues_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_sysqueues_t Struct Reference
    -
    -
    - -

    A container for the system's internal queues. - More...

    -
    -Collaboration diagram for uel_sysqueues_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - -

    -Data Fields

    -void * event_queue_buffer [UEL_SYSQUEUES_EVENT_QUEUE_SIZE]
     The event queue buffer.
     
    uel_cqueue_t event_queue
     The application's event queue. More...
     
    -void * schedule_queue_buffer [UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE]
     The schedule queue buffer.
     
    uel_cqueue_t schedule_queue
     The application's schedule queue. More...
     
    -

    Detailed Description

    -

    A container for the system's internal queues.

    -

    This module conveniently declares and contains the object queues necessary for internal operation of the application.

    -

    It also encapsulate manipulation of shared memory in critical sections. All of its functions are safe, except for uel_sysqueues_init.

    -

    Field Documentation

    - -

    ◆ event_queue

    - -
    -
    - - - - -
    uel_cqueue_t uel_sysqueues_t::event_queue
    -
    - -

    The application's event queue.

    -

    Holds events ready to be processed on the next runloop.

    - -
    -
    - -

    ◆ schedule_queue

    - -
    -
    - - - - -
    uel_cqueue_t uel_sysqueues_t::schedule_queue
    -
    - -

    The application's schedule queue.

    -

    Hold events already processed by the runloop but fit for rescheduling at the scheduler.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structsysqueues__coll__graph.map b/docs/html/structsysqueues__coll__graph.map deleted file mode 100644 index 2ae2b5a..0000000 --- a/docs/html/structsysqueues__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structsysqueues__coll__graph.md5 b/docs/html/structsysqueues__coll__graph.md5 deleted file mode 100644 index cce730a..0000000 --- a/docs/html/structsysqueues__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2f1862db14e6dccc088d694a7562fc75 \ No newline at end of file diff --git a/docs/html/structsysqueues__coll__graph.png b/docs/html/structsysqueues__coll__graph.png deleted file mode 100644 index a78a1f237cdc993af2dd49f0d5f76f151126222d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6409 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 n_IOwz2-g3rAfU#kdpz2l - - - - - - -µEvLoop: uel_application_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_application_t Struct Reference
    -
    -
    - -

    Top-level container for µEvLoop'd application. - More...

    -
    -Collaboration diagram for uel_application_t:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

    -Data Fields

    -uel_module_t ** registry
     The modules managed by this application.
     
    -size_t registry_size
     The number of modules managed by this application.
     
    -uel_syspools_t pools
     Holds the system pools: events and llist nodes.
     
    -uel_sysqueues_t queues
     Holds the system event queues.
     
    -uel_evloop_t event_loop
     The application's event loop.
     
    -uel_scheduer_t scheduler
     The applications's scheduler;.
     
    -uel_signal_relay_t relay
     Unused.
     
    -uel_llist_t relay_buffer [UEL_APP_EVENT_COUNT]
     Unused.
     
    -bool run_scheduler
     Marks when it's time to wake the scheduler.
     
    -

    Detailed Description

    -

    Top-level container for µEvLoop'd application.

    -

    The application module is not necessary, but it does facilitate creating and managing the state of a µEvLoop application. It contains all the system insternals and manages the scheduler and event loops queues automatically.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__application__coll__graph.map b/docs/html/structuel__application__coll__graph.map deleted file mode 100644 index 3d31162..0000000 --- a/docs/html/structuel__application__coll__graph.map +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/html/structuel__application__coll__graph.md5 b/docs/html/structuel__application__coll__graph.md5 deleted file mode 100644 index c07a1dc..0000000 --- a/docs/html/structuel__application__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -900f00f0e16cafca74139c9f275822ca \ No newline at end of file diff --git a/docs/html/structuel__application__coll__graph.png b/docs/html/structuel__application__coll__graph.png deleted file mode 100644 index f6f837219f93bafaa960a7bcbeae78996702ce27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34207 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 U8!9=0DDWdLD)TZ=_?_4P2O`;50RR91 diff --git a/docs/html/structuel__autopool.html b/docs/html/structuel__autopool.html deleted file mode 100644 index 7dcfc85..0000000 --- a/docs/html/structuel__autopool.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -µEvLoop: uel_autopool_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_autopool_t Struct Reference
    -
    -
    - -

    Automatic pools are wrappers to object pools. They manage the acquisition and release cycle from objects issued at the pool by wrapping them in automatic pointers. - More...

    -
    -Collaboration diagram for uel_autopool_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_objpool_t autoptr_pool
     The object pool that holds autopointers.
     
    -uel_closure_t constructor
     The constructor closure.
     
    -uel_closure_t destructor
     The destructor closure.
     
    -

    Detailed Description

    -

    Automatic pools are wrappers to object pools. They manage the acquisition and release cycle from objects issued at the pool by wrapping them in automatic pointers.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__autopool__coll__graph.map b/docs/html/structuel__autopool__coll__graph.map deleted file mode 100644 index 23bcd45..0000000 --- a/docs/html/structuel__autopool__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__autopool__coll__graph.md5 b/docs/html/structuel__autopool__coll__graph.md5 deleted file mode 100644 index 6b2ab7e..0000000 --- a/docs/html/structuel__autopool__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -0cffaae5a7e84b37f60adf63e1cf4449 \ No newline at end of file diff --git a/docs/html/structuel__autopool__coll__graph.png b/docs/html/structuel__autopool__coll__graph.png deleted file mode 100644 index 7d0456696a534d2b1275ecd05fbd2a4d1c3f8897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7013 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 - - - - - - -µEvLoop: uel_autoptr Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_autoptr Struct Reference
    -
    -
    - -

    Automatic pointers are pointers wrapped by information of where they were issued. - More...

    - -

    #include <automatic-pool.h>

    -
    -Collaboration diagram for uel_autoptr:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -void * object
     A pointer to the wrapped object.
     
    -struct uel_autopoolsource
     The pool where the autoptr object was issued.
     
    -

    Detailed Description

    -

    Automatic pointers are pointers wrapped by information of where they were issued.

    -

    Upon deallocation, an object wrapped by an autoptr is automatically returned to its original pool. Automatic pointers are meant to be pooled themselves.

    -

    The programmer can safely cast a uel_autoptr_t to a void * or a pointer to whatever type the wrapped object is.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__autoptr__coll__graph.map b/docs/html/structuel__autoptr__coll__graph.map deleted file mode 100644 index be4180c..0000000 --- a/docs/html/structuel__autoptr__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/structuel__autoptr__coll__graph.md5 b/docs/html/structuel__autoptr__coll__graph.md5 deleted file mode 100644 index 924b488..0000000 --- a/docs/html/structuel__autoptr__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -49aad00ddf46c9c838871f01df161d5b \ No newline at end of file diff --git a/docs/html/structuel__autoptr__coll__graph.png b/docs/html/structuel__autoptr__coll__graph.png deleted file mode 100644 index 9530bb5aedd1bfb3599d6a7efb4c9176475cc588..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11839 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 diff --git a/docs/html/structuel__closure.html b/docs/html/structuel__closure.html deleted file mode 100644 index 332b08f..0000000 --- a/docs/html/structuel__closure.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - -µEvLoop: uel_closure_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_closure_t Struct Reference
    -
    -
    - -

    Defines a closure, a tuple <function, context, destructor> - More...

    -
    -Collaboration diagram for uel_closure_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -uel_closure_function_t function
     The function to be run when the closure is invoked. Must take two pointers ar arguments, one for the context and one for closure parameters. Must return a void pointer.
     
    -void * context
     The context supplied to the closure durint creation. This context will be available during the function execution.
     
    -

    Detailed Description

    -

    Defines a closure, a tuple <function, context, destructor>

    -

    A closure is a data structure that binds some function to a predetermined context. When the function is run, this context will be available to the function body.

    -

    When invoking the closure, additional parameters may be passed along and will also be available to the function body. The function can also return a value that will be passed back by the uel_closure_invoke function.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__closure__coll__graph.map b/docs/html/structuel__closure__coll__graph.map deleted file mode 100644 index 07d3c8f..0000000 --- a/docs/html/structuel__closure__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__closure__coll__graph.md5 b/docs/html/structuel__closure__coll__graph.md5 deleted file mode 100644 index dd4e898..0000000 --- a/docs/html/structuel__closure__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -7c7f0ce0853771875e20de9352f83409 \ No newline at end of file diff --git a/docs/html/structuel__closure__coll__graph.png b/docs/html/structuel__closure__coll__graph.png deleted file mode 100644 index 0089e8c75d626b43a282131b5234a7c750eded2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7024 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

    *hMf9o_2Ih408TGJ*{-bN{50Q&K!Ds zdS+%dfKlh_rZdSjRm8vb_`hqmEx1b0!XmK=AMZC%Uj7<%w^nGXim#e_o+VO>XHkGF kqyKw*1PpWR>vJMOy1mRB0tuqv3Jp?M)>e9}VDs$105i*hRsaA1 diff --git a/docs/html/structuel__conditional.html b/docs/html/structuel__conditional.html deleted file mode 100644 index 2b2af5c..0000000 --- a/docs/html/structuel__conditional.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -µEvLoop: uel_conditional_t Struct Reference - - - - - - - - - -

    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_conditional_t Struct Reference
    -
    -
    - -

    Conditionals are constructs that provide functional flow control. - More...

    -
    -Collaboration diagram for uel_conditional_t:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_closure_t test
     A closure that, based on its input, should return true or false.
     
    -uel_closure_t if_true
     The closure that will be invoked if the test closure returns true
     
    -uel_closure_t if_false
     The closure that will be invoked if the test closure returns false
     
    -

    Detailed Description

    -

    Conditionals are constructs that provide functional flow control.

    -

    A conditional is defined by a tuple <test, if_true, if_false> of closures. When applied to some input, this input is passed to the test closure. Based on its returned value, one of the other closures is invoked.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__conditional__coll__graph.map b/docs/html/structuel__conditional__coll__graph.map deleted file mode 100644 index 0da3d82..0000000 --- a/docs/html/structuel__conditional__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/structuel__conditional__coll__graph.md5 b/docs/html/structuel__conditional__coll__graph.md5 deleted file mode 100644 index 139b978..0000000 --- a/docs/html/structuel__conditional__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -375c4a3f7b1a3c5410efd119015b8515 \ No newline at end of file diff --git a/docs/html/structuel__conditional__coll__graph.png b/docs/html/structuel__conditional__coll__graph.png deleted file mode 100644 index c4262c92c1e503dbf05bc822e356afcfc9ca0854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3901 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 - - - - - - -µEvLoop: uel_cqueue_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_cqueue_t Struct Reference
    -
    -
    - -

    Defines a circular queue of void pointers. - More...

    -
    -Collaboration diagram for uel_cqueue_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - - - - - -

    -Data Fields

    -void ** buffer
     The buffer that will contain the enqueued values.
     
    -uintptr_t size
     The size of the queue. Must be a power of two.
     
    uintptr_t mask
     
    -uintptr_t tail
     The position that indicates where the oldest enqueued element is.
     
    uintptr_t count
     
    -

    Detailed Description

    -

    Defines a circular queue of void pointers.

    -

    The circular queue implementation provided is a fast and memory efficient FIFO data structure that holds void pointers.

    -

    Its capacity is required to be a power of two. This makes possible to use fast modulo-2 arithmetic when dealing with the queue indices.

    -

    Field Documentation

    - -

    ◆ count

    - -
    -
    - - - - -
    uintptr_t uel_cqueue_t::count
    -
    -

    The count of enqueued elements. New elements are put at (tail + count) % size.

    - -
    -
    - -

    ◆ mask

    - -
    -
    - - - - -
    uintptr_t uel_cqueue_t::mask
    -
    -

    The mask used to wrap the indices around the capacity of the queue when they are incremented during pushs/pops

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__cqueue__coll__graph.map b/docs/html/structuel__cqueue__coll__graph.map deleted file mode 100644 index 1e962b0..0000000 --- a/docs/html/structuel__cqueue__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__cqueue__coll__graph.md5 b/docs/html/structuel__cqueue__coll__graph.md5 deleted file mode 100644 index bf01c0c..0000000 --- a/docs/html/structuel__cqueue__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -890c7140b19c0eef71bc1827505e48f6 \ No newline at end of file diff --git a/docs/html/structuel__cqueue__coll__graph.png b/docs/html/structuel__cqueue__coll__graph.png deleted file mode 100644 index b2122e1f2ddc4eb646077915bf568f1f84e15eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7058 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 diff --git a/docs/html/structuel__evloop.html b/docs/html/structuel__evloop.html deleted file mode 100644 index e89c0ff..0000000 --- a/docs/html/structuel__evloop.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -µEvLoop: uel_evloop_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_evloop_t Struct Reference
    -
    -
    - -

    The event loop object. - More...

    -
    -Collaboration diagram for uel_evloop_t:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_syspools_t * pools
     Reference to the system's pools.
     
    -uel_sysqueues_t * queues
     Reference to the system's queues.
     
    -uel_llist_t observers
     Stores references to values to be observed.
     
    -

    Detailed Description

    -

    The event loop object.

    -

    This object represents an event loop. It is operated primarily by the system internal queues:

      -
    1. The inbound event queue, which is the feeding point of the event loop.
    2. -
    3. The outbound schedule queue, which holds reusable timers already run.
    4. -
    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__evloop__coll__graph.map b/docs/html/structuel__evloop__coll__graph.map deleted file mode 100644 index 61f28d3..0000000 --- a/docs/html/structuel__evloop__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/structuel__evloop__coll__graph.md5 b/docs/html/structuel__evloop__coll__graph.md5 deleted file mode 100644 index db86e79..0000000 --- a/docs/html/structuel__evloop__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2c976f6b381641d0288180db180fc4e6 \ No newline at end of file diff --git a/docs/html/structuel__evloop__coll__graph.png b/docs/html/structuel__evloop__coll__graph.png deleted file mode 100644 index fa6d352b277004ebe887812061ac03ba5c5aa836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7847 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 - - - - - - -µEvLoop: uel_func_mapper_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_func_mapper_t Struct Reference
    -
    -
    - -

    Maps elements of an iterator to an area of memory. Each element is assigned to a void pointer slot. - More...

    -
    -Collaboration diagram for uel_func_mapper_t:
    -
    -
    Collaboration graph
    - - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_iterator_t * iterator
     The iterator that enumerates the elements to be mapped.
     
    -void ** destination
     The area of memory to where elements will be mapped.
     
    -size_t limit
     The maximum size of slots to be mapped to.
     
    -

    Detailed Description

    -

    Maps elements of an iterator to an area of memory. Each element is assigned to a void pointer slot.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__func__mapper__coll__graph.map b/docs/html/structuel__func__mapper__coll__graph.map deleted file mode 100644 index d71fddb..0000000 --- a/docs/html/structuel__func__mapper__coll__graph.map +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/docs/html/structuel__func__mapper__coll__graph.md5 b/docs/html/structuel__func__mapper__coll__graph.md5 deleted file mode 100644 index d850eb8..0000000 --- a/docs/html/structuel__func__mapper__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -a6373462821e006b680d95dbbd3bdd43 \ No newline at end of file diff --git a/docs/html/structuel__func__mapper__coll__graph.png b/docs/html/structuel__func__mapper__coll__graph.png deleted file mode 100644 index 92eae822dd416c14767f626baccc93e7d3324dea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7803 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 diff --git a/docs/html/structuel__iterator.html b/docs/html/structuel__iterator.html deleted file mode 100644 index 939f018..0000000 --- a/docs/html/structuel__iterator.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - -µEvLoop: uel_iterator_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_iterator_t Struct Reference
    -
    -
    - -

    Iterators are data structures that wrap arbitrary collections of data and define ways of enumerating them. - More...

    -
    -Collaboration diagram for uel_iterator_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    void *(* next )(uel_iterator_t *, void *)
     The iteration function assigned to this iterator type. More...
     
    -void * collection
     A reference to the collection being iterated.
     
    -

    Detailed Description

    -

    Iterators are data structures that wrap arbitrary collections of data and define ways of enumerating them.

    -

    This is an unspecialised structure that should be augumented with actual behaviour implementation.

    -

    In order to specialise it, create a struct that holds whatever state is meaningful to iteration and has a uel_iterator_t as its first member. Then, whenever needed, cast the iterator to your custom type.

    -

    Field Documentation

    - -

    ◆ next

    - -
    -
    - - - - -
    void*(* uel_iterator_t::next) (uel_iterator_t *, void *)
    -
    - -

    The iteration function assigned to this iterator type.

    -

    This is the actual implementation of the iteration algorithm. It takes a reference to the iterator and the last accessed element's address and returns a reference to the next element.

    -

    To resquest the first collection item, pass NULL as the last element parameter. When this function returns NULL, there are no more elements in the collection to be iterated over.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__iterator__array.html b/docs/html/structuel__iterator__array.html deleted file mode 100644 index fe85d3e..0000000 --- a/docs/html/structuel__iterator__array.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -µEvLoop: uel_iterator_array_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_iterator_array_t Struct Reference
    -
    -
    - -

    A specialised iterator suitable for iterating over arrays of arbitrary data. - More...

    -
    -Collaboration diagram for uel_iterator_array_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_iterator_t base
     The base iterator interface.
     
    -size_t item_count
     The number of elements in the array.
     
    -size_t item_size
     The size of each element in the array.
     
    -

    Detailed Description

    -

    A specialised iterator suitable for iterating over arrays of arbitrary data.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__iterator__array__coll__graph.map b/docs/html/structuel__iterator__array__coll__graph.map deleted file mode 100644 index e362b53..0000000 --- a/docs/html/structuel__iterator__array__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__iterator__array__coll__graph.md5 b/docs/html/structuel__iterator__array__coll__graph.md5 deleted file mode 100644 index 545f52f..0000000 --- a/docs/html/structuel__iterator__array__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -2180149a5adda8e95803573fae71813d \ No newline at end of file diff --git a/docs/html/structuel__iterator__array__coll__graph.png b/docs/html/structuel__iterator__array__coll__graph.png deleted file mode 100644 index 1e87a475207f1e71a7e5c8c3cd88e41db8067ea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6848 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 diff --git a/docs/html/structuel__iterator__coll__graph.map b/docs/html/structuel__iterator__coll__graph.map deleted file mode 100644 index 963e281..0000000 --- a/docs/html/structuel__iterator__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__iterator__coll__graph.md5 b/docs/html/structuel__iterator__coll__graph.md5 deleted file mode 100644 index c5d1631..0000000 --- a/docs/html/structuel__iterator__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -d39bd3026ffd5bab7db032a7e1c0b566 \ No newline at end of file diff --git a/docs/html/structuel__iterator__coll__graph.png b/docs/html/structuel__iterator__coll__graph.png deleted file mode 100644 index 8f3a78269eb86cb16aa96166569e7f8daeb41f51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6087 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 diff --git a/docs/html/structuel__llist.html b/docs/html/structuel__llist.html deleted file mode 100644 index dc083b4..0000000 --- a/docs/html/structuel__llist.html +++ /dev/null @@ -1,113 +0,0 @@ - - - - - - - -µEvLoop: uel_llist_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_llist_t Struct Reference
    -
    -
    - -

    Defines a linked list. If it is empty, head == tail == NULL. Pushing or popping from both the head or tail is always O(1). - More...

    -
    -Collaboration diagram for uel_llist_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_llist_node_t * head
     A pointer to the head of the list. Is NULL when the list is empty.
     
    -uel_llist_node_t * tail
     A pointer to the tail of the list. Is NULL when the list is empty.
     
    -uintptr_t count
     The count of enqueued nodes.
     
    -

    Detailed Description

    -

    Defines a linked list. If it is empty, head == tail == NULL. Pushing or popping from both the head or tail is always O(1).

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__llist__coll__graph.map b/docs/html/structuel__llist__coll__graph.map deleted file mode 100644 index 423bc36..0000000 --- a/docs/html/structuel__llist__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__llist__coll__graph.md5 b/docs/html/structuel__llist__coll__graph.md5 deleted file mode 100644 index 2198477..0000000 --- a/docs/html/structuel__llist__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -e4dad2330e9ffbfb884106f2c3c3076f \ No newline at end of file diff --git a/docs/html/structuel__llist__coll__graph.png b/docs/html/structuel__llist__coll__graph.png deleted file mode 100644 index d67e89084be2a944b29d41cbb1c5a0b130204fc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5620 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 diff --git a/docs/html/structuel__llist__node.html b/docs/html/structuel__llist__node.html deleted file mode 100644 index 5ec9712..0000000 --- a/docs/html/structuel__llist__node.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - -µEvLoop: uel_llist_node_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_llist_node_t Struct Reference
    -
    -
    - -

    Defines a node of the linked list. Holds a void pointer. - More...

    -
    -Collaboration diagram for uel_llist_node_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -void * value
     The value of the node, as a void pointer.
     
    -uel_llist_node_t * next
     The next node in the list.
     
    -

    Detailed Description

    -

    Defines a node of the linked list. Holds a void pointer.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__llist__node__coll__graph.map b/docs/html/structuel__llist__node__coll__graph.map deleted file mode 100644 index 41d402e..0000000 --- a/docs/html/structuel__llist__node__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__llist__node__coll__graph.md5 b/docs/html/structuel__llist__node__coll__graph.md5 deleted file mode 100644 index a303836..0000000 --- a/docs/html/structuel__llist__node__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -00e396b6bf554cf50e138bd2cfb28847 \ No newline at end of file diff --git a/docs/html/structuel__llist__node__coll__graph.png b/docs/html/structuel__llist__node__coll__graph.png deleted file mode 100644 index 19da0cbb65e290b2e5e933ef44b5671edced3947..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6013 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 diff --git a/docs/html/structuel__module.html b/docs/html/structuel__module.html deleted file mode 100644 index fa0cc01..0000000 --- a/docs/html/structuel__module.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - -µEvLoop: uel_module_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_module_t Struct Reference
    -
    -
    - -

    A module is an isolated unit of behaviour with lifecycle hooks. - More...

    -
    -Collaboration diagram for uel_module_t:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - -

    -Data Fields

    uel_module_hook_t config
     
    uel_module_hook_t launch
     
    -struct uel_applicationapp
     Keeps a reference to the application onto which the module is loaded.
     
    -

    Detailed Description

    -

    A module is an isolated unit of behaviour with lifecycle hooks.

    -

    Modules can serve as a variety of purposes:

    -
      -
    • They can act as bridges to static data, such as SFRs;
    • -
    • They can be object factories, meant to distribute and recycle objects to other modules;
    • -
    • They can act as services, background processes that interact with other parts of the application in a sattelite-fashion.
    • -
    -

    Modules are meant to be singletons and user extendable.

    -

    Field Documentation

    - -

    ◆ config

    - -
    -
    - - - - -
    uel_module_hook_t uel_module_t::config
    -
    -

    The config hook should be used for any setup of the module dependencies. It fires after the module has been fully initialised, but may still be in an inconsistent state.

    - -
    -
    - -

    ◆ launch

    - -
    -
    - - - - -
    uel_module_hook_t uel_module_t::launch
    -
    -

    The launch hook is used to start a module. The application will only fire it once all loaded modules are both initialised and configurated (i.e. config hook has been called).

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__module__coll__graph.map b/docs/html/structuel__module__coll__graph.map deleted file mode 100644 index a13c991..0000000 --- a/docs/html/structuel__module__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/html/structuel__module__coll__graph.md5 b/docs/html/structuel__module__coll__graph.md5 deleted file mode 100644 index ac53222..0000000 --- a/docs/html/structuel__module__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -20072b9c02eb85c766a0774b4210ef2d \ No newline at end of file diff --git a/docs/html/structuel__module__coll__graph.png b/docs/html/structuel__module__coll__graph.png deleted file mode 100644 index 0fba8ca037d72c4ec6646b4fc2da10e369d5087c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37591 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 - - - - - - -µEvLoop: uel_objpool_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_objpool_t Struct Reference
    -
    -
    - -

    Pre-allocated memory bound to speciffic types suitable for providing dynamic object management in the stack. - More...

    -
    -Collaboration diagram for uel_objpool_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -uint8_t * buffer
     The buffer that contains each object managed by this pool.
     
    -uel_cqueue_t queue
     The queue containing the addresses for each object in the pool.
     
    -

    Detailed Description

    -

    Pre-allocated memory bound to speciffic types suitable for providing dynamic object management in the stack.

    -

    Object pools are arrays of objects that are pre-allocated in the stack at compile time as an alternative to runtime memory allocation for dynamic object management.

    -

    To efficiently release and acquire objects from a pool, their addresses are kept in a circular queue that is fully populated during initialisation.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__objpool__coll__graph.map b/docs/html/structuel__objpool__coll__graph.map deleted file mode 100644 index a20ce43..0000000 --- a/docs/html/structuel__objpool__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__objpool__coll__graph.md5 b/docs/html/structuel__objpool__coll__graph.md5 deleted file mode 100644 index 5634507..0000000 --- a/docs/html/structuel__objpool__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -13b019f3abeb56296f25af9f5a776f87 \ No newline at end of file diff --git a/docs/html/structuel__objpool__coll__graph.png b/docs/html/structuel__objpool__coll__graph.png deleted file mode 100644 index 797d2811ca9f98edc755c18403172c89f256a87d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5491 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

    f|NZ+nz?U0F@!E$V9!W_?1T9zR zJyi4S#zqCDgKzw&Jz}8*mX?D!yT*|7fGunji&*m>p#~p)7JQk)Yo;>S5^SV=!~~RT zoHjoUXm=nP@1%M8RsOXs4_F4$0^e;p@%g>}NIz2{nXb^PU1+DsZ^}9daG}y`R^sBc z4@`>j8*l(RRHvhFL!Yh - - - - - - -µEvLoop: uel_pipeline_t Struct Reference - - - - - - - - - -

    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_pipeline_t Struct Reference
    -
    -
    - -

    A pipeline is an ordered closure list to be run in sequence. - More...

    -
    -Collaboration diagram for uel_pipeline_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -uel_closure_t * closures
     A reference to an array of closures to be run.
     
    -size_t count
     The number of closures in the array.
     
    -

    Detailed Description

    -

    A pipeline is an ordered closure list to be run in sequence.

    -

    Pipelines contain an ordered list of closures. When applied to some initial parameter, each closure is invoked with the previous one's return value as parameter.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__pipeline__coll__graph.map b/docs/html/structuel__pipeline__coll__graph.map deleted file mode 100644 index 76760d9..0000000 --- a/docs/html/structuel__pipeline__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__pipeline__coll__graph.md5 b/docs/html/structuel__pipeline__coll__graph.md5 deleted file mode 100644 index 6031cba..0000000 --- a/docs/html/structuel__pipeline__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -b24c94c6c78cea55c17360c46bc45bc0 \ No newline at end of file diff --git a/docs/html/structuel__pipeline__coll__graph.png b/docs/html/structuel__pipeline__coll__graph.png deleted file mode 100644 index f0e478b87c592a1dfbcc182ea92b76c6d0714ea4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5304 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 - - - - - - -µEvLoop: uel_promise_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_promise_t Struct Reference
    -
    -
    - -

    A promise is association of an asynchronous operation to the possible execution paths that follow its resolution. It is also a holder for the value it was settled with. - More...

    -
    -Collaboration diagram for uel_promise_t:
    -
    -
    Collaboration graph
    - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - -

    -Data Fields

    -struct uel_promise_storesource
     The promise store from where this promise was issued.
     
    -uel_promise_state_t state
     The current state of this promise.
     
    -void * value
     The value this promise holds. Only meaningful if already settled.
     
    -uel_promise_segment_t * first_segment
     The first segment to be processed when this promise settles.
     
    -uel_promise_segment_t * last_segment
     The last segment to be processed when this promise settles.
     
    -

    Detailed Description

    -

    A promise is association of an asynchronous operation to the possible execution paths that follow its resolution. It is also a holder for the value it was settled with.

    -

    A promise is an object that can be in three different states:

      -
    • PENDING:
      - A promise is pending when its asynchronous operation has not completed yet and the promise does NOT hold any meaningful value.
      - If a segment handler returns a new promise, the original promise is considered pending while it awaits for the new promise to settle.
    • -
    • RESOLVED:
      - A promise is resolved when its asynchronous operation is successfully completed. It consistently holds whatever value it has been resolved with.
    • -
    • REJECTED:
      - A promise is rejected if its asynchronous operation could not complete successfully. Its value is set to whatever error it has been resolved with.
    • -
    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__promise__coll__graph.map b/docs/html/structuel__promise__coll__graph.map deleted file mode 100644 index 28e2189..0000000 --- a/docs/html/structuel__promise__coll__graph.map +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/docs/html/structuel__promise__coll__graph.md5 b/docs/html/structuel__promise__coll__graph.md5 deleted file mode 100644 index 9876c18..0000000 --- a/docs/html/structuel__promise__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -78528ae9e887413aec85924f7452ce25 \ No newline at end of file diff --git a/docs/html/structuel__promise__coll__graph.png b/docs/html/structuel__promise__coll__graph.png deleted file mode 100644 index d6231e05c66549df39a7317577e554ecb12879d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14944 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 C$Nc#K diff --git a/docs/html/structuel__promise__segment.html b/docs/html/structuel__promise__segment.html deleted file mode 100644 index 13ed347..0000000 --- a/docs/html/structuel__promise__segment.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - - -µEvLoop: uel_promise_segment_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_promise_segment_t Struct Reference
    -
    -
    - -

    Defines a single synchronous operation to be invoked when the promise is either resolved or rejected. - More...

    -
    -Collaboration diagram for uel_promise_segment_t:
    -
    -
    Collaboration graph
    - - - - - -
    [legend]
    - - - - - - - - - - - -

    -Data Fields

    -uel_closure_t resolve
     The closure to be invoked when the promise is resolved.
     
    -uel_closure_t reject
     The closure to be invoked when the promise is rejected.
     
    -uel_promise_segment_t * next
     The next synchronous segment to be processed.
     
    -

    Detailed Description

    -

    Defines a single synchronous operation to be invoked when the promise is either resolved or rejected.

    -

    A promise segment is a data structure that defines how to process a value yielded by a promise when it resolves or rejects.

    -

    Segments contain two closures, representing success and error execution paths. Once the promise containing a segment is settled, depending on its state, either closure is invoked with the promise as parameter.

    -

    If a handler closure returns anything different that NULL, it's assumed to be a promise pointer to be awaited for.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__promise__segment__coll__graph.map b/docs/html/structuel__promise__segment__coll__graph.map deleted file mode 100644 index d1d85d9..0000000 --- a/docs/html/structuel__promise__segment__coll__graph.map +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/docs/html/structuel__promise__segment__coll__graph.md5 b/docs/html/structuel__promise__segment__coll__graph.md5 deleted file mode 100644 index 9005347..0000000 --- a/docs/html/structuel__promise__segment__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -bdb8f904f3790b92535bb8b16c8670e3 \ No newline at end of file diff --git a/docs/html/structuel__promise__segment__coll__graph.png b/docs/html/structuel__promise__segment__coll__graph.png deleted file mode 100644 index 57fe5e1fd0b34dc3987cf79094f849b3e44559c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8172 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 diff --git a/docs/html/structuel__promise__store.html b/docs/html/structuel__promise__store.html deleted file mode 100644 index e3bbfe2..0000000 --- a/docs/html/structuel__promise__store.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - -µEvLoop: uel_promise_store_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_promise_store_t Struct Reference
    -
    -
    - -

    An issuer of promises. Contains references to pools for promises and segments. - More...

    -
    -Collaboration diagram for uel_promise_store_t:
    -
    -
    Collaboration graph
    - - - - -
    [legend]
    - - - - - - - - -

    -Data Fields

    -uel_objpool_t * promise_pool
     A reference to the promise pool.
     
    -uel_objpool_t * segment_pool
     A reference to the segment pool.
     
    -

    Detailed Description

    -

    An issuer of promises. Contains references to pools for promises and segments.

    -

    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__promise__store__coll__graph.map b/docs/html/structuel__promise__store__coll__graph.map deleted file mode 100644 index 853e662..0000000 --- a/docs/html/structuel__promise__store__coll__graph.map +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/docs/html/structuel__promise__store__coll__graph.md5 b/docs/html/structuel__promise__store__coll__graph.md5 deleted file mode 100644 index 75ca2a9..0000000 --- a/docs/html/structuel__promise__store__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -3b63650a18ab5fefc8cb220e78069068 \ No newline at end of file diff --git a/docs/html/structuel__promise__store__coll__graph.png b/docs/html/structuel__promise__store__coll__graph.png deleted file mode 100644 index eda5f13ed178166e876b154c52564e799fb692ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4076 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 W$T#k<3atR{g0%1GY80zIeeqwUsuOPj diff --git a/docs/html/structuel__scheduler.html b/docs/html/structuel__scheduler.html deleted file mode 100644 index b2d1bd7..0000000 --- a/docs/html/structuel__scheduler.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - - - -µEvLoop: uel_scheduer_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_scheduer_t Struct Reference
    -
    -
    - -

    The scheduler object. - More...

    -
    -Collaboration diagram for uel_scheduer_t:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - - - - -

    -Data Fields

    uel_llist_t timer_list
     Scheduled timers linked list. More...
     
    uel_llist_t pause_list
     Paused timers linked list. More...
     
    -uel_syspools_t * pools
     Reference to the system's pools.
     
    -uel_sysqueues_t * queues
     Reference to the system's queues.
     
    -volatile uint32_t timer
     Internal timer. Must be updated via uel_sch_update_timer()
     
    -

    Detailed Description

    -

    The scheduler object.

    -

    This object keeps track of time run since the application was launched. It also keeps a queue of events due to be processed sometime in the future.

    -

    It feeds and is fed by the system queues. Timers due to be processed are put in the outbound event queue. Timers awaiting scheduling are put in the inbound schedule queue.

    -

    Field Documentation

    - -

    ◆ pause_list

    - -
    -
    - - - - -
    uel_llist_t uel_scheduer_t::pause_list
    -
    - -

    Paused timers linked list.

    -

    Holds events that had been scheduled but has been paused by the programmer. This is scanned for resumed timers every time uel_sch_manage_timers is called.

    - -
    -
    - -

    ◆ timer_list

    - -
    -
    - - - - -
    uel_llist_t uel_scheduer_t::timer_list
    -
    - -

    Scheduled timers linked list.

    -

    This linked list holds events/timers scheduled to be run in the future. Timers are inserted sorted by its due time, so it is always in execution order.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__scheduler__coll__graph.map b/docs/html/structuel__scheduler__coll__graph.map deleted file mode 100644 index 85656e5..0000000 --- a/docs/html/structuel__scheduler__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/structuel__scheduler__coll__graph.md5 b/docs/html/structuel__scheduler__coll__graph.md5 deleted file mode 100644 index d741683..0000000 --- a/docs/html/structuel__scheduler__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -90268898a2f4a67396fd301824d2d2c0 \ No newline at end of file diff --git a/docs/html/structuel__scheduler__coll__graph.png b/docs/html/structuel__scheduler__coll__graph.png deleted file mode 100644 index 7124d99446b842bdc74c9e6ef643739565d3cf01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10982 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 H3 - - - - - - -µEvLoop: uel_signal_relay_t Struct Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - -
    -
    - -
    -
    uel_signal_relay_t Struct Reference
    -
    -
    - -

    Contains a signal vector and operates on in. - More...

    -
    -Collaboration diagram for uel_signal_relay_t:
    -
    -
    Collaboration graph
    - - - - - - - -
    [legend]
    - - - - - - - - - - - - -

    -Data Fields

    uel_llist_t * signal_vector
     
    uel_sysqueues_t * queues
     
    -uel_syspools_t * pools
     A quick reference to the system's internal pools.
     
    -uintptr_t width
     The number of signals registered at this relay.
     
    -

    Detailed Description

    -

    Contains a signal vector and operates on in.

    -

    The signal relay is the central data structure involved in signal operation. It contains a signal vector, an array of linked lists, each associated to a particular signal.

    -

    When a signal is listened for, the listener closure is added to the linked list corresponding to said signal. When that signal is emitted, each listener closure in the list is invoked.

    -

    Field Documentation

    - -

    ◆ queues

    - -
    -
    - - - - -
    uel_sysqueues_t* uel_signal_relay_t::queues
    -
    -

    The system's internal queues. Upon emission, signals will be enqueued on one of these.

    - -
    -
    - -

    ◆ signal_vector

    - -
    -
    - - - - -
    uel_llist_t* uel_signal_relay_t::signal_vector
    -
    -

    Contains the signal vector. Must be large enough to contain every signal bound to this relay.

    - -
    -
    -
    The documentation for this struct was generated from the following file: -
    - - - - diff --git a/docs/html/structuel__signal__relay__coll__graph.map b/docs/html/structuel__signal__relay__coll__graph.map deleted file mode 100644 index 200725e..0000000 --- a/docs/html/structuel__signal__relay__coll__graph.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/structuel__signal__relay__coll__graph.md5 b/docs/html/structuel__signal__relay__coll__graph.md5 deleted file mode 100644 index 84acc34..0000000 --- a/docs/html/structuel__signal__relay__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -68fa086fe2954b73806e256621a6309e \ No newline at end of file diff --git a/docs/html/structuel__signal__relay__coll__graph.png b/docs/html/structuel__signal__relay__coll__graph.png deleted file mode 100644 index 5e9c248f1739d48ccae6c7c73cbf370a71d452be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10911 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
    mQx^VMDDUaqEY= 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 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png deleted file mode 100644 index e08320fb64e6fa33b573005ed6d8fe294e19db76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 diff --git a/docs/html/system-pools_8h.html b/docs/html/system-pools_8h.html deleted file mode 100644 index df51b4e..0000000 --- a/docs/html/system-pools_8h.html +++ /dev/null @@ -1,315 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/system-pools.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    system-pools.h File Reference
    -
    -
    - -

    A container for the system's internal pools. -More...

    -
    -Include dependency graph for system-pools.h:
    -
    -
    - - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_syspools_t
     A container for the system pools. More...
     
    - - - - - - - -

    -Macros

    -#define UEL_SYSPOOLS_EVENT_POOL_SIZE   (1<<UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N)
     Unrolls the UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N value to its power-of-two form.
     
    -#define UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE   (1<<UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N)
     Unrolls the UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N value to its power-of-two form.
     
    - - - - - - - - - - - - - - - - -

    -Functions

    void uel_syspools_init (uel_syspools_t *pools)
     Initialise the system pools. More...
     
    uel_event_t * uel_syspools_acquire_event (uel_syspools_t *pools)
     Acquires an event from the system pools. More...
     
    uel_llist_node_t * uel_syspools_acquire_llist_node (uel_syspools_t *pools)
     Acquires a linked list node from the system pools. More...
     
    bool uel_syspools_release_event (uel_syspools_t *pools, uel_event_t *event)
     Releases an event to the system pools. More...
     
    bool uel_syspools_release_llist_node (uel_syspools_t *pools, uel_llist_node_t *node)
     Releases a linked list node to the system pools. More...
     
    -

    Detailed Description

    -

    A container for the system's internal pools.

    -

    Function Documentation

    - -

    ◆ uel_syspools_acquire_event()

    - -
    -
    - - - - - - - - -
    uel_event_t* uel_syspools_acquire_event (uel_syspools_t * pools)
    -
    - -

    Acquires an event from the system pools.

    -
    Parameters
    - - -
    poolsThe uel_syspools_t instance
    -
    -
    -
    Returns
    The acquired event
    - -
    -
    - -

    ◆ uel_syspools_acquire_llist_node()

    - -
    -
    - - - - - - - - -
    uel_llist_node_t* uel_syspools_acquire_llist_node (uel_syspools_t * pools)
    -
    - -

    Acquires a linked list node from the system pools.

    -
    Parameters
    - - -
    poolsThe uel_syspools_t instance
    -
    -
    -
    Returns
    The acquired linked list node
    - -
    -
    - -

    ◆ uel_syspools_init()

    - -
    -
    - - - - - - - - -
    void uel_syspools_init (uel_syspools_t * pools)
    -
    - -

    Initialise the system pools.

    -
    Parameters
    - - -
    poolsThe uel_syspools_t instance
    -
    -
    - -
    -
    - -

    ◆ uel_syspools_release_event()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool uel_syspools_release_event (uel_syspools_t * pools,
    uel_event_t * event 
    )
    -
    - -

    Releases an event to the system pools.

    -
    Parameters
    - - - -
    poolsThe uel_syspools_t instance
    eventThe event to be released
    -
    -
    -
    Returns
    Whether the event was successfully released
    - -
    -
    - -

    ◆ uel_syspools_release_llist_node()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    bool uel_syspools_release_llist_node (uel_syspools_t * pools,
    uel_llist_node_t * node 
    )
    -
    - -

    Releases a linked list node to the system pools.

    -
    Parameters
    - - - -
    poolsThe uel_syspools_t instance
    nodeThe linked list node to be released
    -
    -
    -
    Returns
    Wheter the linked list node was successfully released
    - -
    -
    -
    - - - - diff --git a/docs/html/system-pools_8h__dep__incl.map b/docs/html/system-pools_8h__dep__incl.map deleted file mode 100644 index ee66632..0000000 --- a/docs/html/system-pools_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/system-pools_8h__dep__incl.md5 b/docs/html/system-pools_8h__dep__incl.md5 deleted file mode 100644 index e8db9cb..0000000 --- a/docs/html/system-pools_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -89f968e26fb8e62329fce718ec3bdf77 \ No newline at end of file diff --git a/docs/html/system-pools_8h__dep__incl.png b/docs/html/system-pools_8h__dep__incl.png deleted file mode 100644 index 5f10bdc5097f5c6446ed12a598d84cf13982e477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23878 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 - - - - - - - - diff --git a/docs/html/system-pools_8h__incl.md5 b/docs/html/system-pools_8h__incl.md5 deleted file mode 100644 index 6e33aa1..0000000 --- a/docs/html/system-pools_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -16064ff3bab7157d82de6b2edc13286f \ No newline at end of file diff --git a/docs/html/system-pools_8h__incl.png b/docs/html/system-pools_8h__incl.png deleted file mode 100644 index 701a832751c5494f709eab5ba5a1e73d5a698b15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24832 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 z 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

    =wZYsKKP~uw+MghU1|9b71z!DQ1TVHmv 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 diff --git a/docs/html/system-pools_8h_source.html b/docs/html/system-pools_8h_source.html deleted file mode 100644 index 180bd0d..0000000 --- a/docs/html/system-pools_8h_source.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/system-pools.h Source File - - - - - - - - - -

    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    system-pools.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    5 #ifndef UEL_SYSTEM_POOLS_H
    -
    6 #define UEL_SYSTEM_POOLS_H
    -
    7 
    -
    9 #include <stdint.h>
    -
    11 
    -
    12 #include "uevloop/config.h"
    - - -
    15 #include "uevloop/system/event.h"
    -
    16 
    -
    22 typedef struct syspools uel_syspools_t;
    -
    23 struct syspools{
    -
    24 
    -
    26  #define UEL_SYSPOOLS_EVENT_POOL_SIZE (1<<UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N)
    - - -
    32  uel_objpool_t event_pool;
    -
    33 
    -
    35  #define UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE (1<<UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N)
    - - -
    41  uel_objpool_t llist_node_pool;
    -
    42 };
    -
    43 
    -
    48 void uel_syspools_init(uel_syspools_t *pools);
    -
    49 
    -
    55 uel_event_t *uel_syspools_acquire_event(uel_syspools_t *pools);
    -
    56 
    -
    62 uel_llist_node_t *uel_syspools_acquire_llist_node(uel_syspools_t *pools);
    -
    63 
    -
    70 bool uel_syspools_release_event(uel_syspools_t *pools, uel_event_t *event);
    -
    71 
    -
    78 bool uel_syspools_release_llist_node(uel_syspools_t *pools, uel_llist_node_t *node);
    -
    79 
    -
    80 #endif /* UEL_SYSTEM_POOLS_H */
    -
    -
    void * llist_node_pool_queue_buffer[UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE]
    The budder used to store llist node pointers in the llist node pool queue.
    Definition: system-pools.h:39
    -
    uel_objpool_t llist_node_pool
    The llist node pool object. Contains all llist nodes used by the core.
    Definition: system-pools.h:41
    -
    uel_event_t event_pool_buffer[UEL_SYSPOOLS_EVENT_POOL_SIZE]
    The buffer used to store events in the event pool.
    Definition: system-pools.h:28
    -
    Defines a simple implementation of linked lists and functions to manipulate it.
    -
    void * event_pool_queue_buffer[UEL_SYSPOOLS_EVENT_POOL_SIZE]
    The buffer used to store event pointers in the event pool queue.
    Definition: system-pools.h:30
    -
    void uel_syspools_init(uel_syspools_t *pools)
    Initialise the system pools.
    -
    uel_llist_node_t * uel_syspools_acquire_llist_node(uel_syspools_t *pools)
    Acquires a linked list node from the system pools.
    -
    Events are special messages passed around the core. They represent tasks to be run at some point by t...
    Definition: event.h:58
    -
    bool uel_syspools_release_event(uel_syspools_t *pools, uel_event_t *event)
    Releases an event to the system pools.
    -
    Defines object pools, arrays of pre-allocated objects for dynamic use.
    -
    #define UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE
    Unrolls the UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE_LOG2N value to its power-of-two form.
    Definition: system-pools.h:35
    -
    uel_event_t * uel_syspools_acquire_event(uel_syspools_t *pools)
    Acquires an event from the system pools.
    -
    uel_objpool_t event_pool
    The event pool object. Contains all the events used by the core.
    Definition: system-pools.h:32
    -
    bool uel_syspools_release_llist_node(uel_syspools_t *pools, uel_llist_node_t *node)
    Releases a linked list node to the system pools.
    -
    Defines events and methods to configure events.
    -
    #define UEL_SYSPOOLS_EVENT_POOL_SIZE
    Unrolls the UEL_SYSPOOLS_EVENT_POOL_SIZE_LOG2N value to its power-of-two form.
    Definition: system-pools.h:26
    -
    uel_llist_node_t llist_node_pool_buffer[UEL_SYSPOOLS_LLIST_NODE_POOL_SIZE]
    The buffer used to store llist nodes in the llist node pool.
    Definition: system-pools.h:37
    -
    Central repository of system configuration. This is meant to be edited by the programmer as needed.
    -
    A container for the system pools.
    Definition: system-pools.h:23
    - - - - diff --git a/docs/html/system-queues_8h.html b/docs/html/system-queues_8h.html deleted file mode 100644 index d7b2cd6..0000000 --- a/docs/html/system-queues_8h.html +++ /dev/null @@ -1,373 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/system-queues.h File Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    system-queues.h File Reference
    -
    -
    - -

    A container for the system's internal queues. -More...

    -
    -Include dependency graph for system-queues.h:
    -
    -
    - - - - - - - - -
    -
    -This graph shows which files directly or indirectly include this file:
    -
    -
    - - - - - - - -
    -
    -

    Go to the source code of this file.

    - - - - - -

    -Data Structures

    struct  uel_sysqueues_t
     A container for the system's internal queues. More...
     
    - - - - - - - -

    -Macros

    -#define UEL_SYSQUEUES_EVENT_QUEUE_SIZE   (1<<UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N)
     Unrolls the UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N value to its power-of-two form.
     
    -#define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE   (1<<UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N)
     Unrolls the UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N value to its power-of-two form.
     
    - - - - - - - - - - - - - - - - - - - - - - -

    -Functions

    void uel_sysqueues_init (uel_sysqueues_t *queues)
     Initialises a new uel_sysqueues_t. More...
     
    void uel_sysqueues_enqueue_event (uel_sysqueues_t *queues, uel_event_t *event)
     Pushes an event into the event queue. More...
     
    uel_event_t * uel_sysqueues_get_enqueued_event (uel_sysqueues_t *queues)
     Pops an event from the event queue. More...
     
    uintptr_t uel_sysqueues_count_enqueued_events (uel_sysqueues_t *queues)
     Counts the number of elements in the event queue. More...
     
    void uel_sysqueues_schedule_event (uel_sysqueues_t *queues, uel_event_t *event)
     Pushes an event into the schedule queue. More...
     
    uel_event_t * uel_sysqueues_get_scheduled_event (uel_sysqueues_t *queues)
     Pops an event from the schedule queue. More...
     
    uintptr_t uel_sysqueues_count_scheduled_events (uel_sysqueues_t *queues)
     Counts the number of elements in the schedule queue. More...
     
    -

    Detailed Description

    -

    A container for the system's internal queues.

    -

    Function Documentation

    - -

    ◆ uel_sysqueues_count_enqueued_events()

    - -
    -
    - - - - - - - - -
    uintptr_t uel_sysqueues_count_enqueued_events (uel_sysqueues_t * queues)
    -
    - -

    Counts the number of elements in the event queue.

    -
    Parameters
    - - -
    queuesThe uel_sysqueues_t instance whose event queue's elements should be counted
    -
    -
    -
    Returns
    The number of elements in the queue
    - -
    -
    - -

    ◆ uel_sysqueues_count_scheduled_events()

    - -
    -
    - - - - - - - - -
    uintptr_t uel_sysqueues_count_scheduled_events (uel_sysqueues_t * queues)
    -
    - -

    Counts the number of elements in the schedule queue.

    -
    Parameters
    - - -
    queuesThe uel_sysqueues_t instance whose schedule queue's elements should be counted
    -
    -
    -
    Returns
    The number of elements in the queue
    - -
    -
    - -

    ◆ uel_sysqueues_enqueue_event()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_sysqueues_enqueue_event (uel_sysqueues_t * queues,
    uel_event_t * event 
    )
    -
    - -

    Pushes an event into the event queue.

    -

    This makes the event ready for colletion e processing by the event loop.

    -
    Parameters
    - - - -
    queuesThe uel_sysqueues_t instance to be initialised
    eventThe event to be enqueued
    -
    -
    - -
    -
    - -

    ◆ uel_sysqueues_get_enqueued_event()

    - -
    -
    - - - - - - - - -
    uel_event_t* uel_sysqueues_get_enqueued_event (uel_sysqueues_t * queues)
    -
    - -

    Pops an event from the event queue.

    -
    Parameters
    - - -
    queuesThe uel_sysqueues_t instance from whose event queue the event must be popped.
    -
    -
    -
    Returns
    The popped event's address. If the queue is empty, returns NULL.
    - -
    -
    - -

    ◆ uel_sysqueues_get_scheduled_event()

    - -
    -
    - - - - - - - - -
    uel_event_t* uel_sysqueues_get_scheduled_event (uel_sysqueues_t * queues)
    -
    - -

    Pops an event from the schedule queue.

    -
    Parameters
    - - -
    queuesThe uel_sysqueues_t instance from whose schedule queue the event must be popped.
    -
    -
    -
    Returns
    The popped event's address. If the queue is empty, returns NULL.
    - -
    -
    - -

    ◆ uel_sysqueues_init()

    - -
    -
    - - - - - - - - -
    void uel_sysqueues_init (uel_sysqueues_t * queues)
    -
    - -

    Initialises a new uel_sysqueues_t.

    -
    Parameters
    - - -
    queuesThe uel_sysqueues_t instance to be initialised
    -
    -
    - -
    -
    - -

    ◆ uel_sysqueues_schedule_event()

    - -
    -
    - - - - - - - - - - - - - - - - - - -
    void uel_sysqueues_schedule_event (uel_sysqueues_t * queues,
    uel_event_t * event 
    )
    -
    - -

    Pushes an event into the schedule queue.

    -

    This makes the event ready for collection and scheduling by the scheduler.

    -
    Parameters
    - - - -
    queuesThe uel_sysqueues_t instance to be initialised
    eventThe event to be scheduled
    -
    -
    - -
    -
    -
    - - - - diff --git a/docs/html/system-queues_8h__dep__incl.map b/docs/html/system-queues_8h__dep__incl.map deleted file mode 100644 index b09db09..0000000 --- a/docs/html/system-queues_8h__dep__incl.map +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/docs/html/system-queues_8h__dep__incl.md5 b/docs/html/system-queues_8h__dep__incl.md5 deleted file mode 100644 index b65c9a7..0000000 --- a/docs/html/system-queues_8h__dep__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -c886acddb0e67c23af2cb70a54b37136 \ No newline at end of file diff --git a/docs/html/system-queues_8h__dep__incl.png b/docs/html/system-queues_8h__dep__incl.png deleted file mode 100644 index 8da6782597170766e1342a4c7b9c19ed22ed3793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23948 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 - - - - - - - diff --git a/docs/html/system-queues_8h__incl.md5 b/docs/html/system-queues_8h__incl.md5 deleted file mode 100644 index ae675b1..0000000 --- a/docs/html/system-queues_8h__incl.md5 +++ /dev/null @@ -1 +0,0 @@ -25fea88be1f9536579cb54a9a6888687 \ No newline at end of file diff --git a/docs/html/system-queues_8h__incl.png b/docs/html/system-queues_8h__incl.png deleted file mode 100644 index d868ecb30da7aafeebd7577d514259489427c3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18524 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 diff --git a/docs/html/system-queues_8h_source.html b/docs/html/system-queues_8h_source.html deleted file mode 100644 index bccc86d..0000000 --- a/docs/html/system-queues_8h_source.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - -µEvLoop: include/uevloop/system/containers/system-queues.h Source File - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    -
    -
    system-queues.h
    -
    -
    -Go to the documentation of this file.
    1 
    -
    5 #ifndef UEL_SYSTEM_QUEUES_H
    -
    6 #define UEL_SYSTEM_QUEUES_H
    -
    7 
    -
    9 #include <stdint.h>
    -
    11 
    -
    12 #include "uevloop/system/event.h"
    -
    13 #include "uevloop/config.h"
    - -
    15 
    -
    24 typedef struct sysqueues uel_sysqueues_t;
    -
    25 struct sysqueues {
    -
    26 
    -
    28  #define UEL_SYSQUEUES_EVENT_QUEUE_SIZE (1<<UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N)
    - -
    35  uel_cqueue_t event_queue;
    -
    36 
    -
    37 
    -
    39  #define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE (1<<UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N)
    - -
    47  uel_cqueue_t schedule_queue;
    -
    48 };
    -
    49 
    -
    54 void uel_sysqueues_init(uel_sysqueues_t *queues);
    -
    55 
    -
    63 void uel_sysqueues_enqueue_event(uel_sysqueues_t *queues, uel_event_t *event);
    -
    64 
    -
    71 uel_event_t *uel_sysqueues_get_enqueued_event(uel_sysqueues_t *queues);
    -
    72 
    -
    79 uintptr_t uel_sysqueues_count_enqueued_events(uel_sysqueues_t *queues);
    -
    80 
    -
    88 void uel_sysqueues_schedule_event(uel_sysqueues_t *queues, uel_event_t *event);
    -
    89 
    -
    96 uel_event_t *uel_sysqueues_get_scheduled_event(uel_sysqueues_t *queues);
    -
    97 
    -
    104 uintptr_t uel_sysqueues_count_scheduled_events(uel_sysqueues_t *queues);
    -
    105 
    -
    106 #endif /* end of include guard: UEL_SYSTEM_QUEUES_H */
    -
    -
    void * schedule_queue_buffer[UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE]
    The schedule queue buffer.
    Definition: system-queues.h:41
    -
    uintptr_t uel_sysqueues_count_scheduled_events(uel_sysqueues_t *queues)
    Counts the number of elements in the schedule queue.
    -
    void uel_sysqueues_init(uel_sysqueues_t *queues)
    Initialises a new uel_sysqueues_t.
    -
    Events are special messages passed around the core. They represent tasks to be run at some point by t...
    Definition: event.h:58
    -
    #define UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE
    Unrolls the UEL_SYSQUEUES_SCHEDULE_QUEUE_SIZE_LOG2N value to its power-of-two form.
    Definition: system-queues.h:39
    -
    uel_event_t * uel_sysqueues_get_enqueued_event(uel_sysqueues_t *queues)
    Pops an event from the event queue.
    -
    uel_cqueue_t schedule_queue
    The application's schedule queue.
    Definition: system-queues.h:47
    -
    void uel_sysqueues_enqueue_event(uel_sysqueues_t *queues, uel_event_t *event)
    Pushes an event into the event queue.
    -
    uel_cqueue_t event_queue
    The application's event queue.
    Definition: system-queues.h:35
    -
    Defines circular queues, fast and efficient FIFO data structures.
    -
    Defines events and methods to configure events.
    -
    void * event_queue_buffer[UEL_SYSQUEUES_EVENT_QUEUE_SIZE]
    The event queue buffer.
    Definition: system-queues.h:30
    -
    uintptr_t uel_sysqueues_count_enqueued_events(uel_sysqueues_t *queues)
    Counts the number of elements in the event queue.
    -
    Central repository of system configuration. This is meant to be edited by the programmer as needed.
    -
    #define UEL_SYSQUEUES_EVENT_QUEUE_SIZE
    Unrolls the UEL_SYSQUEUES_EVENT_QUEUE_SIZE_LOG2N value to its power-of-two form.
    Definition: system-queues.h:28
    -
    void uel_sysqueues_schedule_event(uel_sysqueues_t *queues, uel_event_t *event)
    Pushes an event into the schedule queue.
    -
    uel_event_t * uel_sysqueues_get_scheduled_event(uel_sysqueues_t *queues)
    Pops an event from the schedule queue.
    -
    A container for the system's internal queues.
    Definition: system-queues.h:25
    - - - - diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png deleted file mode 100644 index 3b725c41c5a527a3a3e40097077d0e206a681247..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png deleted file mode 100644 index e2b4a8638cb3496a016eaed9e16ffc12846dea18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ diff --git a/docs/html/tabs.css b/docs/html/tabs.css deleted file mode 100644 index 7d45d36..0000000 --- a/docs/html/tabs.css +++ /dev/null @@ -1 +0,0 @@ -.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/docs/html/unionevent_1_1uel__event__detail.html b/docs/html/unionevent_1_1uel__event__detail.html deleted file mode 100644 index b0d6d84..0000000 --- a/docs/html/unionevent_1_1uel__event__detail.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - - -µEvLoop: uel_event_t::uel_event_detail Union Reference - - - - - - - - - -
    -
    - - - - - - -
    -
    µEvLoop -
    -
    A fast and lightweight event loop aimed at embedded platforms in C99.
    -
    -
    - - - - - - - - -
    -
    - - -
    - -
    - - -
    -
    - -
    -
    uel_event_t::uel_event_detail Union Reference
    -
    -
    - -

    #include <event.h>

    -
    -Collaboration diagram for uel_event_t::uel_event_detail:
    -
    -
    Collaboration graph
    - - - - - - - - - - - - - -
    [legend]
    - - - - - - - - - - - - - - -

    -Data Structures

    struct  uel_event_listener
     Contains the context of a particular signal listener. More...
     
    struct  uel_event_observer
     Contains the reference to an observer variable. More...
     
    struct  uel_event_signal
     Contains information related to an emitted signal. More...
     
    struct  uel_event_timer
     Contains information suitable for scheduling an event at the scheduler. More...
     
    - - - - - - - - - - - - - -

    -Data Fields

    -struct event::uel_event_detail::uel_event_timer timer
     The scheduling information of this event. Relevant only for timers.
     
    -struct event::uel_event_detail::uel_event_signal signal
     The emission information of this event. Relevant only for signals.
     
    -struct event::uel_event_detail::uel_event_listener listener
     The listening information of this event. Relevant only for signal listeners.
     
    -struct event::uel_event_detail::uel_event_observer observer
     The observing information of this event. Relevant only for observers.
     
    -

    Detailed Description

    -

    Allows to compact many speciffic details on various event types on a single memory slot. Pertinent content depends on the type member value.

    -

    The documentation for this union was generated from the following file: -
    - - - - diff --git a/docs/html/unionevent_1_1uel__event__detail__coll__graph.map b/docs/html/unionevent_1_1uel__event__detail__coll__graph.map deleted file mode 100644 index 0370e60..0000000 --- a/docs/html/unionevent_1_1uel__event__detail__coll__graph.map +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/html/unionevent_1_1uel__event__detail__coll__graph.md5 b/docs/html/unionevent_1_1uel__event__detail__coll__graph.md5 deleted file mode 100644 index 1806ca5..0000000 --- a/docs/html/unionevent_1_1uel__event__detail__coll__graph.md5 +++ /dev/null @@ -1 +0,0 @@ -fbaa02c277245840306e3dd5a7ce84bd \ No newline at end of file diff --git a/docs/html/unionevent_1_1uel__event__detail__coll__graph.png b/docs/html/unionevent_1_1uel__event__detail__coll__graph.png deleted file mode 100644 index 2eeb8108a9b62775b1fe332e8b55a5866a7e2d41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40951 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 - diff --git a/include/uevloop/system/event.h b/include/uevloop/system/event.h index d2cd5d3..3244611 100644 --- a/include/uevloop/system/event.h +++ b/include/uevloop/system/event.h @@ -34,7 +34,6 @@ enum uel_event_timer_status { //! Alias to the uel_event_timer_status typedef enum uel_event_timer_status uel_event_timer_status_t; - /** \brief Events are special messages passed around the core. * They represent tasks to be run at some point by the system. * @@ -55,11 +54,13 @@ typedef enum uel_event_timer_status uel_event_timer_status_t; * flag determines whether the signal should be able to fire multiple times or just once. */ typedef struct event uel_event_t; +typedef void (*event_final_callback_t)(uel_event_t *); struct event { uel_event_type_t type; //!< The type of the event, as defined by `uel_event_type_t` uel_closure_t closure; //!< The closure to be invoked a.k.a. the action to be run void *value; //!< The value the closure should be invoked with bool repeating; //!< Marks whether the event should be discarded after processing. + event_final_callback_t final_callback; //!< Get's called when all the listeners have been invoked. //! Allows to compact many speciffic details on various event types on a single //! memory slot. Pertinent content depends on the `type` member value. diff --git a/include/uevloop/system/signal.h b/include/uevloop/system/signal.h index 63b5191..54e4c37 100644 --- a/include/uevloop/system/signal.h +++ b/include/uevloop/system/signal.h @@ -114,6 +114,17 @@ void uel_signal_unlisten(uel_signal_listener_t listener); */ void uel_signal_emit(uel_signal_t signal, uel_signal_relay_t *relay, void *params); +/** \brief Emits a signal at the supplied relay. Any closure listening to this + * signal will be asynchronously invoked. When all are invoked, call the final callback. + * + * \param signal The signal to be emitted + * \param relay The relay where the signal is registered + * \param params The parameters supplied to the listener's closure when it is + * invoked. + */ +void uel_signal_emit_with_final_callback(uel_signal_t signal, uel_signal_relay_t *relay, void *params, + event_final_callback_t final_callback); + /** \brief Attaches a non-repeating listener that resolves the provided promise * upon emission. * diff --git a/src/system/event-loop.c b/src/system/event-loop.c index 4dcf2a9..8718c8c 100644 --- a/src/system/event-loop.c +++ b/src/system/event-loop.c @@ -58,6 +58,12 @@ static inline void run_signal_event(uel_evloop_t *event_loop, uel_event_t *signa uel_closure_t *closure = &closures[i]; uel_closure_invoke(closure, signal->value); } + + if (signal->final_callback != NULL) + { + signal->final_callback(signal); + } + for(unsigned int node_count = j, j = 0; j < node_count; j++){ uel_event_t *event = removed_nodes[j]->value; uel_syspools_release_event(event_loop->pools, event); diff --git a/src/system/event.c b/src/system/event.c index 407c00c..a95ed01 100644 --- a/src/system/event.c +++ b/src/system/event.c @@ -10,6 +10,7 @@ void uel_event_config_closure( void *value, bool repeating ) { + event->final_callback = NULL; event->type = UEL_CLOSURE_EVENT; event->closure = *closure; event->value = value; @@ -22,6 +23,7 @@ void uel_event_config_signal( uel_llist_t *listeners, void *params ){ + event->final_callback = NULL; event->closure = uel_closure_create(NULL, NULL); event->type = UEL_SIGNAL_EVENT; event->detail.signal.value = signal; @@ -30,6 +32,7 @@ void uel_event_config_signal( } void uel_event_config_signal_listener(uel_event_t *event, uel_closure_t *closure, bool repeating){ + event->final_callback = NULL; event->type = UEL_SIGNAL_LISTENER_EVENT; event->closure = *closure; event->repeating = repeating; @@ -42,6 +45,7 @@ void uel_event_config_observer( volatile uintptr_t *condition_var, bool repeating ){ + event->final_callback = NULL; event->type = UEL_OBSERVER_EVENT; event->closure = *closure; event->repeating = repeating; @@ -63,6 +67,7 @@ void uel_event_config_timer( void *value, uint32_t current_time ) { + event->final_callback = NULL; event->type = UEL_TIMER_EVENT; event->closure = *closure; event->value = value; diff --git a/src/system/signal.c b/src/system/signal.c index 33e5fac..e8b329c 100644 --- a/src/system/signal.c +++ b/src/system/signal.c @@ -76,6 +76,22 @@ void uel_signal_emit(uel_signal_t signal, uel_signal_relay_t *relay, void *param } } +void uel_signal_emit_with_final_callback(uel_signal_t signal, uel_signal_relay_t *relay, void *params, + event_final_callback_t final_callback) +{ + uel_llist_t *listeners = &relay->signal_vector[signal]; + bool has_listeners = false; + UEL_CRITICAL_ENTER; + has_listeners = listeners->count > 0; + UEL_CRITICAL_EXIT; + if (has_listeners) { + uel_event_t *event = uel_syspools_acquire_event(relay->pools); + uel_event_config_signal(event, signal, listeners, params); + event->final_callback = final_callback; + uel_sysqueues_enqueue_event(relay->queues, event); + } +} + uel_signal_listener_t uel_signal_resolve_promise( uel_signal_t signal, uel_signal_relay_t *relay,